我试图创建一个将在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上。
我有什么遗失的东西吗?如果没有,这是一个错误,是否有计划修复它?
答案 0 :(得分:2)
好的,我现在已经设法“修复”了这个问题。
我在我的cabal文件中添加了extra-libraries: stdc++-6, gcc_s_seh-1
,现在可以正常工作了。不知道这是否与平台无关,但是当我通过堆栈安装GHC时,这些库确实会附带GHC。