簡體   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