有没有办法用 Cargo 创建 C 库?
Is there a way to create C library with Cargo?
我需要创建一个(静态)C 库来绑定到现有的板条箱。 Cargo 有什么方法可以为我创建这个 C 库吗?
我有一个 crate(例如 html5ever),我希望 Cargo 为那个 crate 创建一个基于 C-API 的 C 库。
Is there any way Cargo can create this C library for me?
Cargo 目前没有这个功能。
I have a crate (e.g. html5ever), and I want Cargo to create a C library based on C-API for that crate.
它在 C 中是有原因的吗? C 可以直接调用 Rust 代码,你可以直接使用 html5ever
。
解决这个问题的一种方法是创建一个特殊的板条箱来存储您的 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。
我想,cargo-c 正是您要找的:
It produces and installs a correct pkg-config file, a static library and a dynamic library, and a C header to be used by any C (and C-compatible) software.
我需要创建一个(静态)C 库来绑定到现有的板条箱。 Cargo 有什么方法可以为我创建这个 C 库吗?
我有一个 crate(例如 html5ever),我希望 Cargo 为那个 crate 创建一个基于 C-API 的 C 库。
Is there any way Cargo can create this C library for me?
Cargo 目前没有这个功能。
I have a crate (e.g. html5ever), and I want Cargo to create a C library based on C-API for that crate.
它在 C 中是有原因的吗? C 可以直接调用 Rust 代码,你可以直接使用 html5ever
。
解决这个问题的一种方法是创建一个特殊的板条箱来存储您的 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。
我想,cargo-c 正是您要找的:
It produces and installs a correct pkg-config file, a static library and a dynamic library, and a C header to be used by any C (and C-compatible) software.