在Haskell项目中包含C++源代码
Including C++ sources in a Haskell project
我正在尝试制作一个数据结构,该结构将在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。
相关文章:
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 难以理解某些人解决IOI问题的源代码
- 使用g++编译hdf5源代码
- 如何使用C++读取另一个程序中的源代码输出
- Poco FindMySql.cmake 无法找到 MySQL 源代码
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- C++出现控制台错误.我无法识别源代码的问题
- Qt Quick,如何更改 Ui 源代码?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 从macOS Catalina上的源代码编译LLVM(如何解决未找到"stdio.h")
- 如何使用QT创建器获取网页源代码?
- 从源代码构建 gRPC C++
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- 如何在使用 LLVM 编译时获取部分源代码的二进制代码
- 如何在源代码中包含外部库的头文件?
- 如何查找 torch.bmm 的 c++ 源代码 pytorch.
- 是否有可能使用debug_info获取ELF文件的源代码?
- 为什么Qt必须从源代码构建以进行交叉编译?