微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

windows – 为什么我的WINVER 4 .exe在W98SE下运行?

我需要为运行 Windows 98SE的遗留系统构建我的应用程序. (系统涉及特殊硬件,不可能进行操作系统升级.)我的开发环境是Visual C;该应用程序是vanilla ANSI C,结果是WIN32控制台应用程序.

我知道在Visual Studio 2008中对旧版Windows的支持完全被删除了,所以我使用的是Visual Studio 2005(我在上一代Windows XP笔记本电脑上仍然使用它).我有条件编译,以避免调用W98SE下不可用的API函数,我知道不使用Unicode.

注:这一切都曾经奏效.我以前成功构建了W98SE可执行文件.不知何故.

我构建的应用程序失败了“期待更新版本的Windows.升级Windows版本”.

我用十六进制编辑器检查了.exe文件,并且WINVER值(在这种情况下是偏移288十进制)是4,应该是.在正常构建中,即对于现代Windows版本,WINVER值(在这种情况下是偏移296的十进制)是5.那么WINVER = 4版本如何导致“Expects an new version”错误报道?

您很可能已将其与更新的运行时库MSVCRT.DLL相关联.
试试以下:
dumpbin /dependents myfile.exe

如果它显示MSVCRTnn.DLL,则表示您遇到了麻烦.
如果它显示MSVCRT.DLL(没有数字),你应该是好的,但仍然谨慎.

可能最简单的解决方案是静态链接运行时库:
在项目属性中,在C/C++下,代码生成,将运行时库设置为/ MT或/ MTd.
如果使用/ MD或/ MDd或认值,它将动态链接到运行时并可能导致问题.

更改此后,“dumpbin / dependents myfile.exe”不应再列出对MSVCRT.DLL的依赖,它应该可以正常工作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐