我正在 Qt
(C++
) 中构建一个应用程序,它使用用 Haskell 编写的库作为后端。如何将Haskell
库的接口(interface)导出到C++
?
当haskell 库中的函数使用像int
或float
这样的简单类型时,这不是问题,但是当它们使用结构作为参数时呢?在这种情况下,最具扩展性的解决方案是什么?
最佳答案
您需要编写 haskell 代码来将这些数据结构编码为您可以在 Haskell 中使用的数据结构。 c2hs 工具在这方面很有帮助:http://hackage.haskell.org/package/c2hs
虽然该工具似乎是为从 Haskell 调用 C 而设计的,但它在相反的意义上也非常有用——它允许您将复杂的 C 类型编码为 Haskell 类型。由于您公开的函数需要采用 C 类型(通常是指向复杂结构的指针),因此您可以 A)构造适当的 C 结构,并且 B)使用 c2hs 提供的功能,然后将这些结构编码到公开函数中的 Haskell ,以便您可以与他们合作。
还请注意,使用 c2hs 样式生成的工具,您不需要编码所有内容。您可以只生成访问器来查看您真正关心的 C 数据结构部分。
关于c++ - 从 C++ 调用 Haskell 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815804/