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

时间:2015-08-02 07:35:37

标签: windows rust rust-cargo

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

1 个答案:

答案 0 :(得分:5)

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

cargo rustc -- -L lib

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

另一种可能更方便的方法是使用build script自动将库目录传递给rustc。然后它将与其他货物命令一起使用,例如runtest等。如果您将以下代码存储到build.rs

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

(假设您的库名为libfoo.a

然后将build密钥添加到Cargo.toml中的[package]部分:

[package]
...
build = "build.rs"

然后它应该在每个构建命令时自动找到你的库。

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