我需要创建一个绑定到现有 crate 的(静态)C 库。Cargo 有什么方法可以为我创建这个 C 库吗?
我有一个板条箱(例如 html5ever),我希望 Cargo 为该板条箱创建一个基于 C-API 的 C 库。
我需要创建一个绑定到现有 crate 的(静态)C 库。Cargo 有什么方法可以为我创建这个 C 库吗?
我有一个板条箱(例如 html5ever),我希望 Cargo 为该板条箱创建一个基于 C-API 的 C 库。
Cargo 有什么方法可以为我创建这个 C 库吗?
Cargo 目前没有这个功能。
我有一个板条箱(例如 html5ever),我希望 Cargo 为该板条箱创建一个基于 C-API 的 C 库。
它在C中是否有原因?C 可以直接调用 Rust 代码,你可以直接使用html5ever
它。
解决这个问题的一种方法是创建一个特殊的 crate 来存储你的 C API。例如,如果你的库被调用foo
,那么在你的主目录中有另一个文件夹旁边的src
/tests
被调用capi
,它将存储foo_capi
C API 的特殊板条箱。
foo
|
+--src
|
+--test
|
+--capi
|
+--include
|
+--src
|
Cargo.toml
include
文件夹包含 C 的头文件。
src
包含导出到 C 中的 Rust 文件。
Cargo 清单应该是静态链接的,并且依赖于项目 foo。例如查看html5ever中使用的 Cargo.toml。