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

Including C++ sources in a Haskell project

本文关键字:C++ 源代码 包含 Haskell 项目      更新时间:2023-10-16

我正在尝试制作一个数据结构,该结构将在Haskell中公开,但在C++中实现。到目前为止,我已经在.cpp文件中实现了它,将我需要的所有函数声明为extern "C",并将源文件添加到.cabal文件中的c-sources字段中。当我构建项目(在本例中使用stack build)时,它似乎构建得很好。

我知道它正在对C++文件执行操作,因为如果出现错误,它不会编译。

我还没有尝试运行这个项目,因为它是一个库,到目前为止还没有写任何"可运行"的东西,但repl似乎不起作用。

当我尝试运行它时(在这种情况下是stack repl),我会得到一个丢失的符号错误,其中有一些损坏的名称,可能是也可能不是我文件中的名称。

unknown symbol `_ZdlPv'
linking extra libraries/objects failed

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

我有什么东西不见了吗?如果不是,这是一个错误吗?是否有修复计划?

好的,我现在已经设法"解决"了这个问题。

我在我的阴谋集团文件中添加了一个extra-libraries: stdc++-6, gcc_s_seh-1,现在它可以工作了。不知道这是否是独立于平台的,但当我通过堆栈安装GHC时,这些库确实附带了GHC。