haskell 生成 FFI 导出包装代码

Posted

技术标签:

【中文标题】haskell 生成 FFI 导出包装代码【英文标题】:haskell generate FFI export wrapper code 【发布时间】:2012-04-01 01:38:07 【问题描述】:

我正在用 Haskell 编写一些必须可以从 C 调用的代码。Haskell 中是否有工具或库可以简化为需要导出的 haskell 函数编写 FFI 包装器代码。

例如,给定要导出的haskell 函数的工具会根据需要将haskell 类型映射到正确的Foreign.C 类型等(生成包装器代码)。它还会在映射 [Int] 类型等时生成正确的指针。就像提问者在这里尝试的 Automatic conversion of types for FFI calls in Haskell 一样。但只有它像图书馆一样可用吗?

【问题讨论】:

【参考方案1】:

我编写了一个名为Hs2lib 的工具来执行此操作。如果你在 Windows 上,你很幸运,它会做所有事情,包括将代码编译为 dll 和生成 c/c++ 或 c# 包装器。如果您使用的是 linux,恐怕我还没有让编译步骤开始工作,但它仍然会产生所需的编组信息和存根。您可以使用 -T 标志告诉它保留这些。

【讨论】:

以上是关于haskell 生成 FFI 导出包装代码的主要内容,如果未能解决你的问题,请参考以下文章

从 Rust 调用动态链接的 Haskell 代码

Haskell中PETSc FFI的库设计

Haskell FFI/C 的性能考虑?

安全执行不受信任的 Haskell 代码

工具rest:Haskell的REST开源框架

Haskell趣学指南