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

时间:2015-03-31 15:50:08

标签: static-libraries rust rust-cargo c-api

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

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

2 个答案:

答案 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