椿の日記

たぶんプログラムの話をします

2011-01-07から1日間の記事一覧

ポインタで値を受け取る関数のFFI

C言語は、言語の都合上、関数へ渡したアドレスを用いて戻り値を受け取ることがしばしばあります。 extern "C" void ReceivePointer( int* p ) { *p = 100; }これをHaskellで受け取るために、次のような手順をとります。 allocaでスタック上にメモリを割り当…

DLLをHaskellで使う

以前Haskellでiconvでもiconv.dllを使いましたが、今度は自分でDLLを作ってFFIを利用して呼び出してみます。 DLLを作る 自分は、普段はVisualStudioを使ってるので、VS2010でDLLを構築します。 とりあえずWin32プロジェクトでDLLを選択して、以下のような関…