[英]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.