加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 04:04:54 所属栏目:Windows 来源:网络整理
导读:我需要为运行 Windows 98SE的遗留系统构建我的应用程序. (系统涉及特殊硬件,不可能进行操作系统升级.)我的开发环境是Visual C;该应用程序是vanilla ANSI C,结果是WIN32控制台应用程序. 我知道在Visual Studio 2008中对旧版Windows的支持完全被删除了,所以我
我需要为运行 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的依赖,它应该可以正常工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读