我需要创建一个绑定到现有包的(静态)C库。 Cargo有什么办法可以为我创建这个C库吗?
我有一个箱子(例如html5ever),我希望Cargo为该箱子创建一个基于C-API的C库。
答案 0 :(得分:1)
Cargo有什么办法可以为我创建这个C库吗?
Cargo目前没有此功能。
我有一个箱子(例如html5ever),我希望Cargo为该箱子创建一个基于C-API的C库。
有没有理由它在C? C可以直接调用Rust代码,你只需使用html5ever
就可以了。
答案 1 :(得分:0)
解决此问题的方法是创建一个存储C API的特殊包。例如,如果您的库名为foo
,则在主目录中包含名为src
的{{1}} / tests
旁边的另一个文件夹,该文件夹将存储一个特殊的包{{1} } for C API。
capi
foo_capi
文件夹包含C的头文件。
foo
|
+--src
|
+--test
|
+--capi
|
+--include
|
+--src
|
Cargo.toml
包含导出到C的Rust文件。
货物清单应该是静态链接的,并且依赖于项目foo。例如,请查看html5ever中使用的Cargo.toml。