Kann ich eine Anwendung ausführen, die in Visual Studio 2005 unter Windows 98 zusammengestellt wurde?

StackOverflow https://stackoverflow.com/questions/6831756

Frage

Ich habe ein Programm in Microsoft Visual Studio 2005 erstellt und es funktioniert einwandfrei.

Das Problem, das ich habe, ist die Maschine, auf der er verwendet werden muss, ist das Ausführen von Windows 98. Soweit ich das feststellen kann, muss ich das für VC ++ neu verteilte Verteilungsabteil installieren. Kann ich das erneut verteilte unter Windows 98 installieren oder gibt es eine Möglichkeit, dass es unter Windows 98 funktioniert?

War es hilfreich?

Lösung

Ja, Apps, die mit VS 2005 zusammengestellt wurden, funktionieren auf Windows 98 und mir vollkommen gut. Ich habe einige von ihnen selbst geführt und vs 2005 in der Nähe und für genau diesen Zweck installiert. Version 2005 des CRT -Neuverteilungsabteils wird bis hin zu Windows 98 unterstützt.

Der Trick ist das Sie müssen die Anwendung für den Multi-Byte-Zeichensatz (MBCs) zusammenstellen.. Es funktioniert nicht, wenn es als Unicode kompiliert wird, was die Standard -Projekteinstellung ist. Windows 9x -Plattformen unterstützen Unicode nicht ohne zusätzliche Hilfe. Sie sollten in der Lage sein, die Projekteinstellungen zu ändern und in Ordnung zu sein. Wenn Sie jedoch Ihren Code geschrieben haben, um Unicode anzunehmen, haben Sie ein Problem.

Aus diesem Grund müssen Sie generische Zeichentypen und Funktionen verwenden tchar.h, anstatt ihre breiten Charakteräquivalente, die für Unicode -Builds bevorzugt werden. Definieren Sie immer Zeichenfolgen mit dem TCHAR Typ (oder LPTSTR oder LPCTSTR Typen), die bedingt definiert sind bis wchar_t oder char, wie angemessen. Verwenden Sie String -Manipulationsfunktionen, die mit beginnen _tcs..., eher als die für breite oder enge Zeichen spezifisch. Stellen Sie sicher, dass Sie beim Aufrufen von Funktionen immer die generischen Typedef'ed-Versionen nennen und nicht die ansi- oder weitspezifischen, die mit einem enden A oder ein W Suffix.

Es kann eine Menge Arbeit sein, zurückzugehen und dies zu beheben, wenn Sie es von Anfang an nicht getan haben. Wenn dies der Fall ist, könnten Sie sich die ansehen Microsoft Layer für Unicode unter Windows 95/98/ME Systems, die eine Abstraktionsebene liefert, mit der Sie Unicode -Funktionen auf den Legacy Windows 9x -Betriebssystemen aufrufen können, in denen sie nicht nativ unterstützt werden.

Über Unicode/MBCs hinaus, auf das Sie achten müssen, ist das einzige, auf das Sie achten müssen, dass Sie keine Funktionen aufrufen, die in der Win32 -APIs nicht in den Windows 98 Days vorhanden waren. Sie können nicht vertrauen, was die Online -MSDN -Dokumentation für die "Minimum unterstützte Client -Version" sagt, da Microsoft Windows 98 nicht mehr unterstützt. Alle Von den SDK -Dokumenten heißt es, dass die minimal unterstützte Version jetzt Windows 2000 ist und Sie wissen, dass dies nicht korrekt ist. Die gesamte API wurde nicht so spät wie W2K eingeführt. Um genaue Informationen zu erhalten, müssen Sie eine alte Version der SDK -Dokumentation erhalten. Was mit Ihrer Installation von VS 2005 kam, sollte in Ordnung sein. Die Informationen dort gehen mindestens bis zum Gewinn von 98 zurück, wenn nicht 95 (ich erinnere mich nicht genau).

In Fällen, in denen Sie Funktionen anrufen möchten, die in Windows 98 nicht vorhanden waren, wenn Sie auf neueren Systemen laufen, wo sie sind Verfügbar, müssen Sie zusätzlich darauf achten, sie anzurufen dynamisch, anstatt sie der DLL -Importtabelle Ihrer Anwendung hinzuzufügen (was der Linker im Allgemeinen automatisch für Sie tut). Das bedeutet, Funktionszeiger selbst zu definieren und die zu verwenden LoadLibrary und GetProcAddress Funktionen, sie anzurufen. Es macht keinen Spaß, aber es tut Arbeit.

Alternativ können Sie den Linker so konfigurieren, dass sie die Bibliotheken "laden" (Überprüfen Sie die Eigenschaften Ihres Projekts). Dies ist viel bequemer, aber natürlich müssen Sie sicherstellen, dass Sie nur Rufen Sie die Funktionen auf, die in Ihrem Zielbetriebssystem verfügbar sind, andernfalls stürzt die Anwendung ab.

So oder so die, die GetVersionEx Funktion Ermittelt Ihnen alles, was Sie über das aktuelle Host -Betriebssystem wissen müssen, damit Ihr Code je nach Umgebung unterschiedliche Pfade aufnehmen kann (wenn sie neuere Funktionen aufrufen, oder wenn nicht, wenn dies nicht zu älteren ist). Auf diese Weise können Sie neue Funktionen auf neuen Systemen unterstützen und gleichzeitig den Grad an Unterstützung für ältere Betriebssysteme beibehalten. Sie werden viel finden if Anweisungen in der Codebasis, wenn dies richtig erfolgt. :-)

Andere Tipps

Ja, du kannst http://www.microsoft.com/download/en/details.aspx?id=3387 (Microsoft Visual C ++ 2005 Neuverteilbares Paket (x86))

Unterstützte Betriebssysteme: Windows 2000 Service Pack 3, Windows 98, Windows 98 Second Edition, Windows ME, Windows Server 2003, Windows XP Service Pack 2

Haben Sie die Systemanforderungen überprüft? Entsprechend dieser Link, Windows 98 sollte in Ordnung sein.

Es gibt mehr als die Verteilung von CRT mit Ihrer Bewerbung. Alle Funktionen, die Sie im Programm verwenden, müssen in Windows98 verfügbar sein. Für alle Funktionen, die Sie bei MSDN finden, finden Sie einen "minimal unterstützten Kunden". Das ist schwierig ...
Um das CRT -Problem zu überwinden, können Sie die Anwendung (/MT -Linker Option) statisch verknüpfen. Wird zu einem größeren Binärer führen, aber funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top