Erstellen Sie für Windows NT 4.0 mit Visual Studio 2005?

stimmen
17

Eine MFC - Anwendung , die ich versuche , Anwendungen zu migrieren afxext.h, die Ursachen zu _AFXDLLbekommen gesetzt, die diesen Fehler verursacht , wenn ich festgelegt /MT:

Bitte benutzen Sie den / MD-Schalter für _AFXDLL baut

Meine Forschung bisher gibt an, dass es unmöglich ist, eine Anwendung für die Ausführung unter Windows NT 4.0 mit Visual Studio (C ++, in diesem Fall) 2005 zu bauen.

Ist das wirklich wahr? Gibt es Abhilfe zur Verfügung?

Veröffentlicht am 03/08/2008 um 03:48
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
8

Nein, es gibt viele Anwendungen mit VS2005 gebaut, auf dem Windows XP unterstützen haben, 2000, NT, den ganzen Stapel. Das Problem ist, dass (standardmäßig) VS2005 will Bibliotheken verwenden / export nicht vor NT.

Siehe diesen Thread für einige Hintergrundinformationen .

Dann starten Sie Ihre Abhängigkeiten über Präprozessormakros zu begrenzen, und die Vermeidung von APIs, die nicht auf NT unterstützt.

Beantwortet am 03/08/2008 um 17:54
quelle vom benutzer

stimmen
4

Um erhalten die Fehler _AFXDLL befreien, haben Sie an den Einstellungen versucht Wechsel zu verwenden MFC als eine statische lib anstelle einer DLL? Dies ist ähnlich zu dem, was Sie bereits bei der Veränderung der Laufzeit libs statisch statt DLL zu tun.

Beantwortet am 23/08/2008 um 02:16
quelle vom benutzer

stimmen
3

Die Abhilfe ist der Multi-Thread - DLL zu beheben. Einfache Anweisungen . Kurze Zusammenfassung:

Der Versand 8.0 C - Laufzeitbibliothek DLL (MSVCR80.dll) nicht unterstützt NT 4.0 SP6 aus einem Grund und nur aus einem Grund: jemand bei Microsoft einen Funktionsaufruf hinzugefügt , GetLongPathNameWdie auf NT 4.0 in kernel32.dll nicht vorhanden ist .

CRTLIB.C On line 577, gibt es einen Aufruf zu GetLongPathNameW. ersetzen Sie einfach mit: ret = 0; nur verwenden Sie diesen Build von MSVCR80.dll auf NT 4.0.

Sobald Sie diese Arbeiten haben, sollte trivial sein mit einer allgemeineren Lösung kommen.

Beantwortet am 14/10/2008 um 13:32
quelle vom benutzer

stimmen
1

Obwohl ich mit afxext.h nicht vertraut bin, frage ich mich darüber, was es mit Windows NT4 nicht kompatibel macht ....

Um jedoch die ursprüngliche Frage zu beantworten: „Meine Forschung bisher gibt an, dass es unmöglich ist, eine Anwendung für die Ausführung unter Windows NT 4.0 mit Visual Studio (C ++, in diesem Fall) 2005 zu bauen“

Die Antwort sollte ja vor allem, wenn die Anwendung wurde ursprünglich auf NT4 geschrieben oder läuft! Mit der afxext.h Sache beiseite, soll dies eine einfache JA sein.

Die andere Sache, Ich habe Probleme zu finden, mit der lockeren Art, in der die Menschen die NT Begriff werfen. Zugegeben die meisten Leute denken, der ‚NT‘ wie Windows NT4, aber es ist immer noch nicht eindeutig, weil "die meisten Menschen nicht gleich ist‚alle Menschen.‘

In Wirklichkeit ist der Begriff ‚NT‘ gleich die NT-Serie. Die NT-Serie ist NT3, NT4, NT5 (2000, XP, 2003) und NT6 (Vista).

Win32 ist ein Subsystem, das Sie Ihre C / C ++ Code zielen. So sehe ich keinen Grund, warum man nicht in der Lage Ziel oder diese NT4-Plattform & Subsystem sein sollte, wenn diese eine Plattform zu portieren excercise ist, entfernen Sie die MFC-Abhängigkeiten, die VC möglicherweise imposanter ist.

Das Hinzufügen der afxext.h auf die Mischung, es klingt für mich wie ein Subsystem Kompatibilitätsproblem. Es ist ein Teil von MFC aus meiner Google-Forschung. Die afxext.h erscheint die MFC (Microsoft Foundation Class) Erweiterungen zu sein.

Können Sie Ihre Abhängigkeit von MFC entfernen? Welche Art von Anwendung ist das? (CLR, Service, GUI-Schnittstelle?) Können Sie konvertieren Projekt zu einem nicht verwalteten C ++ Projekt in VC 8.0?

Hoffentlich einige dieser wird Ihnen helfen, zusammen.

Beantwortet am 18/09/2008 um 17:18
quelle vom benutzer

stimmen
-1

Die Idee ist, dass die exe auf die statische Bibliothek zu verknüpfen benötigt.

Bitte versuchen Sie diese „Konfigurationseigenschaft“, „Allgemein“, „Die Verwendung von MFC“ auf „Verwenden MFC in einer statischen Bibliothek“ „Konfigurationseigenschaften“, „Allgemein“, „Die Verwendung von ATL“ auf „Static Link zu ATL“

"Konfigurationseigenschaften", "C \ C ++", "Code Generation", "Laufzeitbibliothek" auf "Multi-Threaded (\ MT)"

Testplattform Build-Maschine: Visual Studio 2005 auf Windows XP SP2-Client-Maschine: Windows XP SP2 (kein VS2005 installiert ist)

Beantwortet am 21/11/2008 um 00:04
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more