如何告诉rust(通过cargo)在哪里找到我的dll导入库



我正在生成一个由rust使用的带有mingw的dll。我知道我可以把libxxx.a文件放在"Rustbinrustlibx86_64-pc-windows-gnulib"目录下,这就是我现在所做的。但我宁愿把它保存在我的项目目录中。我要怎么让Cargo告诉rust去哪里找?

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

cargo rustc -- -L lib

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

另一个可能更方便的方法是使用构建脚本将库目录自动传递给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"

,那么它应该在每个构建命令时自动找到您的库。

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

最新更新