morris555's diary

高校生のブログです。

FFIを使ってみよう

FFIを使ってHaskellからC++の関数を呼び出してみました。

まずC++のコード

#include <iostream>

extern "C" {

void hello() {
  std::cout << "Hello World!" << std::endl;
}

}

大切なのは「extern "C" {}」を忘れないことです。

そしてHaskell

{-# LANGUAGE ForeignFunctionInterface #-}

main = c_hello

foreign import ccall "hello" c_hello :: IO ()

こんな感じです

あとは、

$ g++ -c hello.cpp
$ ghc -lstdc++ --make main.hs hello.o

これでOKです。

$ ./main
Hello World!

こんな感じに出来ます。

情報によるとghcが64bitコードに対応してないらしい(?)ので

g++に-m32オプションをつけて下さい。