有没有办法使用 Cargo 创建 C 库



我需要创建一个绑定到现有 crate 的(静态(C 库。Cargo 有什么方法可以为我创建这个 C 库吗?

我有一个板条箱(例如html5ever(,我希望Cargo为该板条箱创建一个基于C-API的C库。

Cargo 有什么方法可以为我创建这个 C 库吗?

货物目前没有此功能。

我有一个板条箱(例如html5ever(,我希望Cargo为该板条箱创建一个基于C-API的C库。

它用 C 语言有什么原因吗?C 可以直接调用 Rust 代码,你可以只使用现有的html5ever

解决此问题的一种方法是创建一个特殊的 crate 来存储您的 C API。例如,如果你的库叫做 foo ,那么在你的主目录中还有另一个文件夹,旁边是 src/tests capi ,它将存储一个特殊的 crate foo_capi用于 C API。

  foo
   |
   +--src
   | 
   +--test
   |
   +--capi
        | 
        +--include 
        |
        +--src 
        |
        Cargo.toml

include文件夹包含 C 的头文件。

src包含导出为 C 的 Rust 文件。

货物清单应该是静态链接的,并且依赖于项目 foo。例如,看看html5ever中使用的Cargo.toml。

我认为,cargo-c 正是您正在寻找的:

它生成并安装正确的 pkg 配置文件、静态库和动态库,以及供任何 C(和 C 兼容(软件使用的 C 标头。

相关内容

  • 没有找到相关文章

最新更新