Build for Windows NT 4.0 met behulp van Visual Studio 2005?

stemmen
17

Een MFC-toepassing die ik ben op zoek naar toepassingen te migreren afxext.h, waardoor _AFXDLLte krijgen opgericht, die deze fout veroorzaakt als ik te stellen /MT:

Maak gebruik van de / MD schakelaar voor _AFXDLL bouwt

Mijn onderzoek tot nu toe blijkt dat het onmogelijk is om een ​​applicatie voor uitvoering in Windows NT 4.0 met behulp van Visual Studio (C ++, in dit geval) 2005 bouwen.

Is dit echt waar? Zijn er workaround beschikbaar?

De vraag is gesteld op 03/08/2008 om 03:48
bron van user
In andere talen...                            


5 antwoorden

stemmen
8

Nee, er zijn vele toepassingen gebouwd met VS2005 die moeten Windows XP, 2000, NT, de hele stapel te ondersteunen. Het probleem is dat (standaard) VS2005 wil libraries / exports niet aanwezig is op NT gebruiken.

Zie deze discussie voor wat achtergrondinformatie.

Dan start het beperken van uw afhankelijkheden via preprocessor macro's, en het vermijden van API's die niet worden ondersteund op NT.

antwoordde op 03/08/2008 om 17:54
bron van user

stemmen
4

Om zich te ontdoen van de _AFXDLL fout, heb je geprobeerd het veranderen van de instellingen om MFC te gebruiken als een statische lib in plaats van een DLL? Dit is vergelijkbaar met wat je al doet in het veranderen van de runtime libs om statische plaats van DLL.

antwoordde op 23/08/2008 om 02:16
bron van user

stemmen
1

Hoewel ik ben niet bekend met afxext.h, vraag ik me af hoe zit het deze compatibel is met Windows NT4 maakt ....

Echter, om de oorspronkelijke vraag te beantwoorden: "Mijn onderzoek tot nu toe blijkt dat het onmogelijk is om een ​​applicatie voor de uitvoering voort te bouwen op Windows NT 4.0 met behulp van Visual Studio (C ++, in dit geval) 2005."

Het antwoord moet ja zijn, vooral als de toepassing oorspronkelijk werd geschreven of draait op NT4! Met de afxext.h ding opzij, moet dit een gemakkelijke YES zijn.

Het andere wat ik ben het vinden van problemen met het losse karakter waarin mensen het gooien van de NT termijn. Toegegeven de meeste mensen denken van 'NT' als Windows NT4, maar het is nog steeds onduidelijk want 'de meeste mensen' is niet gelijk aan 'alle mensen.'

In werkelijkheid is de term 'NT' is gelijk aan de NT-serie. De NT-serie is NT3, NT4, NT5 (2000, XP, 2003) en NT6 (Vista).

Win32 is een subsysteem waarop u te richten op uw C / C ++ code. Dus ik geen reden waarom men niet in staat zijn doel moet zijn dit NT4 platform & subsysteem of zien, als dit is een platform porten oefening, verwijdert u de MFC afhankelijkheden die VC is misschien indrukwekkend.

de afxext.h aan de mix toe te voegen, het klinkt voor mij als een subsysteem probleem met de compatibiliteit. Het maakt deel uit van de MFC uit mijn Google-onderzoek. De afxext.h lijkt de MFC (Microsoft Foundation Class) extensies.

Kunt u uw afhankelijkheid van MFC verwijderen? Wat voor soort applicatie is dit? (CLR, service, GUI interface?) Kun je project te zetten in een unmanaged C ++ project in VC 8.0?

Hopelijk een deel van dit zal u op weg te helpen.

antwoordde op 18/09/2008 om 17:18
bron van user

stemmen
3

De oplossing is om de multi-threaded DLL lossen. Eenvoudige instructies . Korte samenvatting:

De scheepvaart 8.0 C Runtime Library DLL (msvcr80.dll) biedt geen ondersteuning NT 4.0 SP6 om één reden en één enkele reden: iemand bij Microsoft voegde een functie oproep om GetLongPathNameWdie bestaat niet in kernel32.dll op NT 4.0.

CRTLIB.C On line 577, is er een oproep aan GetLongPathNameW. eenvoudig te vervangen door: ret = 0; alleen gebruik maken van deze build van msvcr80.dll op NT 4.0.

Zodra je die werken hebt, het bedenken van een meer generieke oplossing moet triviaal.

antwoordde op 14/10/2008 om 13:32
bron van user

stemmen
-1

Het idee is dat de exe is nodig om te linken naar de statische bibliotheek.

Probeer dit "Configuration Properties", "Algemeen", "Het gebruik van MFC" naar "Use MFC in een statische bibliotheek" "Configuration Properties", "Algemeen", "Het gebruik van ATL" tot "Static Link naar ATL"

"Configuration Properties", "C \ C ++", "Code Generation", "Runtime Library" tot "multi-threaded (\ MT)"

Test Platform Build Machine: Visual Studio 2005 op Windows XP SP2 Client Machine: Windows XP SP2 (geen VS2005 geïnstalleerd)

antwoordde op 21/11/2008 om 00:04
bron van user

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