2

Ich habe eine gemischte MFC-Anwendung von VS2005 zu VS2008 konvertiert. Es kompiliert OK, aber beim Starten der Anwendung bekomme ich eine Assert in afxwin1.inl, weil afxCurrentResourceHandle = NULL.Mixed-Modus-MFC-Anwendung, die in VS2008 nicht richtig initialisiert

Dies ist bevor MyCWinApp :: InitInstance aufgerufen wird. Der Call-Stack ist

mfc90d.dll->AfxWinInit (with HINSTANCE = NULL) 
myapp.exe!InternalDllMain 
myapp.exe!PostDllMain 
myapp.exe!dynamic intilizer for postDllMain::A0x61ae6c8e 

Das gleiche Projekt in VS2005 startet gut und ich feststellen, dass statt PostDllMain genannt beeing WinMainCRTStarup wird genannt zu werden, und es wird eine definierte Instanz-Handle:

mfc80d.dll!AfxWinInit (with HINSTANCE = 0x0040000) 
mfc80d.dll!AfxWinMain 
myApp.exe!WinMain 
myApp.exe!__tmainCRTStartup 
myapp.exe!WinMainCRTStartup 

Die App ist kompiliert mit/clr und Links zu verwalteten, unmanaged und gemischten libs und dlls.

Kann jemand etwas zu diesem Thema beleuchten? Gibt es in diesem Bereich Unterschiede zwischen VS2005 und VS2008?

Danke!

Antwort

1

bekam ich eine nette Antwort von Rong-Chun Zhang auf dem MSDN-Forum:

Hallo,

ich einen Test auf meiner Seite durchgeführt, und ich habe das Problem auf meiner Seite nicht reproduzieren. Der Aufruf-Stack in Vsiaul Studio 2008 sieht jedoch so aus, als wäre es eine DLL. Daher habe ich versucht, die _USRDLL in den Proprocessor-Definitionen (/ D "_USRDLL") der Projekteinstellungen hinzuzufügen. Ich habe die gleiche Assertion wie beschrieben erhalten. Bitte überprüfen Sie, ob das Projekt mit "_USRDLL" kompiliert wurde.

Weitere Informationen http://support.microsoft.com/kb/115088

Lassen Sie mich wissen, ob das hilft, wenn nicht, könnten Sie uns bitte über die Befehlszeile der Projekteinstellungen zeigen?

Danke, Rong-Chun Zhang


Das war direkt am Mark!

Es stellt sich heraus, dass eines der Projekte in meiner Lösung, die als eine statische Bibliothek eingerichtet wurde, _USRDLL in seinen Präprozessordefinitionen definiert hat. Irgendwie wird dies in VS2005 verworfen, aber VS2008 scheint es eindeutig nicht zu mögen.

Danke Herr. Zhang!