Dav*_*nes 9 static-libraries rust rust-cargo
我正在Rust中构建一个将从C/C++代码调用的库.Cargo.toml
配置为将包传输为静态库:
[lib]
crate-type = ["staticlib"]
Run Code Online (Sandbox Code Playgroud)
我有一个测试tests/integration_test.rs
:
extern crate mylibrary;
#[test]
fn it_works() {
hello_world(); // Defined in 'mylibrary'.
}
Run Code Online (Sandbox Code Playgroud)
但是,在运行测试时cargo test
,会输出以下错误:
error[E0463]: can't find crate for `mylibrary`
--> tests\integration_test.rs:1:1
|
1 | extern crate mylibrary;
| ^^^^^^^^^^^^^^^^^^^^^ can't find crate
Run Code Online (Sandbox Code Playgroud)
如果我从那时删除staticlib配置行,Cargo.toml
测试构建并运行正常.
我有两种可能性:
在以不同方式运行测试时,是否需要配置包的构建(即,它不构建静态库)?
我是否需要在测试中以不同方式链接静态库包(即好像它是系统C库)?
从文档中不清楚配置此设置的正确方法是什么,或者如何去做.
[lib]
crate-type = ["lib", "staticlib"]
Run Code Online (Sandbox Code Playgroud)
只要使用这个,您就没有后顾之忧。
https://doc.rust-lang.org/reference/linkage.html说“这些输出是可堆叠的,因为如果指定了多个输出,那么编译器将生成每种形式的输出,而无需重新编译。”
归档时间: |
|
查看次数: |
575 次 |
最近记录: |