我正在调整用Rust编写的库的构建过程。目标是在Windows上使用MSVCC进行编译。由于某些特定的依赖关系,我必须确保使用正确的MSVCC链接器,因此我为Cargo设置了一个特定于项目的配置文件:
[target.x86_64-pc-windows-msvc]
linker = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe"
现在运行cargo build
时,我的构建脚本build.rs
不再执行了。由于脚本为重要库提供了路径,因此构建过程最终会失败。
要使用Visual Studio 12在Windows 10(64位)下重现该问题,请按如下方式创建项目:
| build.rs
| Cargo.toml
|
+---.cargo
| config
|
\---src
main.rs
./ build.rs:
use std::env;
fn main() {
let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
panic!("Building!");
}
./ Cargo.toml:
[package]
name = "some_binary"
version = "0.1.0"
build = "build.rs"
.cargo /配置:
[target.x86_64-pc-windows-msvc]
linker = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe"
的src / main.rs:
fn main() {
println!("Hello, world!");
}
当您致电cargo build
时,链接应该以
LINK:致命错误LNK1181:无法打开输入文件 ' advapi32.lib'
答案 0 :(得分:2)
目前,当明确指定VS链接器时,Rust的稳定版本无法包含正确的库(即Windows SDK)。因此,无法链接构建脚本并且构建失败。
夜间最近的变化解决了这个问题。只需切换到每晚或等到合并到稳定版本。