src/Galakhsy/ ディレクトリに Haskell ファイル Saturn.hs と C++ ファイル hssaturn.cpp と hssaturn.h があります。hssaturn.cpp には、lib/saturn/src/lib/ にある libsaturn.cpp および/または libsaturn.hpp が必要です。
適切にコンパイルする方法がわかりません。ポインタはありますか?
を使用して、すべての C++ ファイルをオブジェクト ファイルにコンパイルしますg++ -c filename.cpp
。あなたの場合、これは hssaturn.o と libsaturn.o を生成します。次に、Haskell プログラムを でコンパイルしますghc --make -o whatever Saturn.hs hssaturn.o libsaturn.o
。また、C++ で必要な共有ライブラリを で指定します-lblabla
。おそらく、少なくとも C++ 標準ライブラリが必要です。つまり-lstdc++
、GHC コマンドを次のようにします。
ghc --make -o whatever Saturn.hs hssaturn.o libsaturn.o -lstdc++
(まあ、2 つのオブジェクト ファイルの正しいパスをモジュロします)。
extern "C"
また、Haskell から呼び出す C++ 関数に を使用して、名前マングリングを防ぐことも忘れないでください。
補遺: libsaturn という名前から、おそらくライブラリだと思います。そのようにコンパイルし、単純に動的にリンクすることを検討することをお勧めします (-l
上記のように GHC に切り替えます)。