0

我在 src/Galakhsy/ 目录中有一个 Haskell 文件 Saturn.hs,以及一个 C++ 文件 hssaturn.cpp 和 hssaturn.h。hssaturn.cpp 需要 libsaturn.cpp 和/或 libsaturn.hpp,它们位于 lib/saturn/src/lib/ 中。

我不知道如何正确编译它,任何指针?

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++

(嗯,以两个目标文件的正确路径为模)。

还要记住通过使用extern "C"从 Haskell 调用的 C++ 函数来防止名称混淆。

附录: libsaturn 这个名字让我觉得它可能是一个图书馆。您可能需要考虑按原样编译它并简单地动态链接(-l如上所述切换到 GHC)。

于 2013-03-07T19:51:21.713 回答