如何告诉rustc(通过货物)在哪里找到我的DLL导入库

Ben*_*ley 5 windows rust rust-cargo

我正在制作一个带有mingw的dll用于生锈.我知道我可以将我的libxxx.a文件放在"Rust\bin\rustlib\x86_64-pc-windows-gnu\lib"目录中,这就是我现在正在做的事情.但我宁愿把它放在我项目的目录中.我如何让Cargo告诉rustc在哪里找到它?

Vla*_*eev 6

首先,您可以使用直接cargo rustc-L dir参数传递给rustc:

cargo rustc -- -L lib
Run Code Online (Sandbox Code Playgroud)

如果您的库位于lib子目录中.

另一种可能更方便的方法是使用构建脚本自动将库目录传递给rustc.然后,它会与其他货物命令使用的,以及像run,test等等.如果存储下面的代码build.rs:

fn main() {
    println!("cargo:rustc-link-lib=native=foo");
    println!("cargo:rustc-link-search=native=lib");
}
Run Code Online (Sandbox Code Playgroud)

(假设你的图书馆被召唤libfoo.a)

然后在Cargo.toml中添加build键到[package]部分:

[package]
...
build = "build.rs"
Run Code Online (Sandbox Code Playgroud)

那么它应该在每个构建命令时自动找到你的库.

请注意,构建脚本也是实际构建库的好地方.货物文档包含示例和链接.