Rust 在链接静态 C 库时缺少库

问题描述 投票:0回答:1

我遇到了链接静态库的问题 - 当没有 windows.h 并调用 WinAPI 时,它链接并工作正常,但是当它们使用时,我在构建时收到此错误:

error: linking with `link.exe` failed: exit code: 1120
note: external-test.lib(library_win32.cpp.obj) : error LNK2019: unresolved external symbol __imp_MessageBoxW referenced in function init_window

在所有使用的库列表中,没有 user32.lib。也许这就是问题所在?我怎样才能告诉链接器使用它

note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX64\\x64\\link.exe" ... "kernel32.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"

这里构建脚本:

fn main() {
    println!("cargo:rustc-link-search={}/src/external",env::var("CARGO_MANIFEST_DIR").unwrap());
}
c rust static-libraries
1个回答
-1
投票

解决方案很简单 - 在构建脚本中链接 user32

© www.soinside.com 2019 - 2024. All rights reserved.