在Haskell项目中包含C ++源代码

时间:2016-05-08 16:14:56

标签: c++ haskell cabal

我试图创建一个将在Haskell中公开但在C ++中实现的数据结构。到目前为止,我已在.cpp文件中实现了该文件,并将所需的所有函数声明为extern "C",并将源文件添加到c-sources中的.cabal字段中文件。当我构建项目时(在这种情况下使用stack build),它似乎构建正常。

我知道它正在对C ++文件执行某些事情,因为如果有错误,它就不会编译。

我还没有尝试运行该项目,因为它是一个图书馆,到目前为止它还没有任何东西可以运行#34;写的,但是repl似乎不起作用。

当我尝试运行它(在这种情况下是stack repl)时,我得到一个丢失的符号错误,其中包含一些可能引用或未引用我文件中名称的错位名称。

unknown symbol `_ZdlPv'
linking extra libraries/objects failed

如何解决此问题?我之前遇到过类似的问题,我通过手动将源代码编译成动态库来修复,然后在我的项目中使用该库。我不想这样做,因为它将我与平台联系起来,因为使用GHC已经拥有的工具无法用项目编译简单的C ++是没有意义的。我希望能够把它放在hackage上。

我有什么遗失的东西吗?如果没有,这是一个错误,是否有计划修复它?

1 个答案:

答案 0 :(得分:2)

好的,我现在已经设法“修复”了这个问题。

我在我的cabal文件中添加了extra-libraries: stdc++-6, gcc_s_seh-1,现在可以正常工作了。不知道这是否与平台无关,但是当我通过堆栈安装GHC时,这些库确实会附带GHC。