Ich muss meine Anwendung für ein Legacy-System erstellen, auf dem Windows 98SE ausgeführt wird. (Das System beinhaltet spezielle Hardware und ein Betriebssystem-Upgrade ist keine Möglichkeit.) Meine Entwicklungsumgebung ist Visual C ++; Die Anwendung ist Vanilla ANSI C und das Ergebnis ist eine WIN32-Konsolenanwendung.
Ich bin mir bewusst, dass in Visual Studio 2008 die Unterstützung für ältere Versionen von Windows vollständig gelöscht wurde, weshalb ich stattdessen Visual Studio 2005 verwende (das ich immer noch auf meinem letzten Windows XP-Laptop habe). Ich habe bedingte Kompilierung, um den Aufruf von API-Funktionen zu vermeiden, die unter W98SE nicht verfügbar sind, und ich weiß, dass ich kein Unicode verwende.
n.b. Das alles funktioniert . Ich habe erfolgreich W98SE ausführbare Dateien in der Vergangenheit gebaut. Irgendwie.
Die Anwendung, die ich erstellt habe, schlägt mit dem "Erwartet eine neuere Version von Windows. Aktualisieren Sie Ihre Windows-Version" fehl.
Ich habe die .exe-Datei mit einem Hex-Editor untersucht, und der WINVER-Wert (der in diesem Fall 288 dezimal ist) ist 4, wie es sein sollte. Auf dem normalen Build, dh für moderne Windows-Versionen, ist der WINVER-Wert (der in diesem Fall 296 dezimal ist) 5. Wie also ist es möglich, dass die WINVER = 4-Version den Fehler "Erwartet eine neuere Version" verursacht gemeldet werden?
Höchstwahrscheinlich haben Sie es mit der neueren Laufzeitbibliothek MSVCRT.DLL verknüpft. Versuchen Sie Folgendes:
%Vor%Wenn MSVCRTnn.DLL angezeigt wird, liegt ein Problem vor. Wenn es MSVCRT.DLL (keine Zahlen) zeigt, sollten Sie gut sein, aber immer noch vorsichtig.
Die wahrscheinlich einfachste Lösung besteht darin, die Laufzeitbibliothek statisch zu verknüpfen: Setzen Sie in Projekteigenschaften unter C / C ++, Codegenerierung, Laufzeitbibliothek auf / MT oder / MTd. Wenn Sie / MD oder / MDd oder Standard verwenden, wird es dynamisch mit der Laufzeit verknüpft und kann zu Problemen führen.
Nachdem Sie dies geändert haben, sollte "dumpbin / dependents myfile.exe" die Abhängigkeit von MSVCRT.DLL nicht länger auflisten und es sollte einfach funktionieren.
Tags und Links windows