Chuyu-Team / YY-Thunks

Fix DecodePointer, EncodePointer,RegDeleteKeyEx etc. APIs not found in Windows XP RTM.
MIT License
497 stars 102 forks source link

无法解析的外部符号 _wcsicmp,函数 _GetDynamicTimeZoneInformation@4 中引用了该符号 #47

Closed zema1 closed 1 year ago

zema1 commented 1 year ago

我在 rust 中尝试使用这个库来兼容老版本的 xp 系统,编译时遇到这个问题,环境信息: image

我做了一些尝试,比如添加 vcruntimelib msvcrt.lib 等均没有作用,通过打印 verbose 日志,我发现 __wcsicmp 这个函数有被找到

image

感觉表现比较奇怪,来求助一下。

我的编译选项:

$env:RUSTFLAGS='-Ctarget-feature=+crt-static -Clink-args=/subsystem:console,5.01 -Clink-args=YY_Thunks_for_WinXP.obj -Clink-args=/verbose'
cargo build --target i686-pc-windows-msvc -v

代码是一个 hello word,感觉不是 rust 的问题

// main.rs
fn main() {
    println!("hello world");
}
zema1 commented 1 year ago

可以通过链接一个 oldnames.lib 解决,感谢作者指点。即

$env:RUSTFLAGS='-Ctarget-feature=+crt-static -Clink-args=/subsystem:console,5.01 -Clink-args=YY_Thunks_for_WinXP.obj -Clink-args=oldnames.lib'
cargo build --target i686-pc-windows-msvc -v
mingkuang-Chuyu commented 1 year ago

现在已经避免 wcsicmp 调用,请耐心等待新版本发布。

mingkuang-Chuyu commented 1 year ago

https://github.com/Chuyu-Team/YY-Thunks/releases/tag/v1.0.8-Beta1