繁体   English   中英

为什么我的WINVER 4 .exe无法在W98SE下运行?

[英]Why won't my WINVER 4 .exe run under W98SE?

我需要为运行Windows 98SE的旧系统构建应用程序。 (系统涉及特殊的硬件,不可能进行OS升级。)我的开发环境是Visual C ++。 该应用程序是普通ANSI C,结果是WIN32控制台应用程序。

我知道在Visual Studio 2008中,对Windows的较早版本的支持已完全删除,因此我改用Visual Studio 2005(我的上一代Windows XP笔记本电脑上仍然有)。 我有条件编译以避免调用W98SE下不可用的API函数,并且我知道不使用Unicode。

nb 这一切过去都是可行的 我过去已经成功构建了W98SE可执行文件。 不知何故。

我构建的应用程序因“期望Windows的较新版本。升级Windows版本”而失败。

我已经用十六进制编辑器检查了.exe文件,并且WINVER值(在本例中为288十进制偏移)为4。 在正常版本上,即对于现代Windows版本,WINVER值(在这种情况下为偏移十进制296)为5。因此,WINVER = 4版本如何导致“期望新版本”错误发生?被举报?

您很可能已将其链接到最新的运行时库MSVCRT.DLL。 请尝试以下操作:

dumpbin /dependents myfile.exe

如果显示MSVCRTnn.DLL,则您有麻烦。 如果显示MSVCRT.DLL(无数字),则应该不错,但仍要谨慎。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM