0

src/Galakhsy/ ディレクトリに Haskell ファイル Saturn.hs と C++ ファイル hssaturn.cpp と hssaturn.h があります。hssaturn.cpp には、lib/saturn/src/lib/ にある libsaturn.cpp および/または libsaturn.hpp が必要です。

適切にコンパイルする方法がわかりません。ポインタはありますか?

4

1 に答える 1

2

を使用して、すべての 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 に切り替えます)。

于 2013-03-07T19:51:21.713 に答える