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オプションをつけて下さい。