如何告诉 rustc(通过 cargo)在哪里可以找到我的 dll 导入库
How to tell rustc (through cargo) where to find my dll import library
我正在用 mingw 生成一个 dll 供 Rust 使用。我知道我可以将我的 libxxx.a
文件放在 "Rust\bin\rustlib\x86_64-pc-windows-gnu\lib"
目录中,这就是我现在正在做的。但我宁愿将它保存在我的项目目录中。我如何让 Cargo 告诉 rustc 在哪里找到它?
首先可以使用cargo rustc
将-L dir
参数直接传给rustc:
cargo rustc -- -L lib
如果您的库位于 lib
子目录中。
另一种可能更方便的方法是使用 build script 将库目录自动传递给 rustc。然后它将与其他 cargo 命令一起使用,如 run
、test
等。如果将以下代码存储到 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"
然后它应该会在每次生成命令时自动找到您的库。
请注意,构建脚本也是实际 构建 您的库的好地方。 Cargo 文档包含相关示例和链接。
我正在用 mingw 生成一个 dll 供 Rust 使用。我知道我可以将我的 libxxx.a
文件放在 "Rust\bin\rustlib\x86_64-pc-windows-gnu\lib"
目录中,这就是我现在正在做的。但我宁愿将它保存在我的项目目录中。我如何让 Cargo 告诉 rustc 在哪里找到它?
首先可以使用cargo rustc
将-L dir
参数直接传给rustc:
cargo rustc -- -L lib
如果您的库位于 lib
子目录中。
另一种可能更方便的方法是使用 build script 将库目录自动传递给 rustc。然后它将与其他 cargo 命令一起使用,如 run
、test
等。如果将以下代码存储到 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"
然后它应该会在每次生成命令时自动找到您的库。
请注意,构建脚本也是实际 构建 您的库的好地方。 Cargo 文档包含相关示例和链接。