Portieren einer MFC Anwendung auf andere Plattformen (Windows XP, 2000 ect.)
-
Wenn du das Projekt wirklich auf "MFC statisch" eingestellt hast, dann linkst du irgendwas anderes dazu was die MFC DLL braucht.
=> DependencyWalkerps: vielleicht vergessen auch die Release-Config auf "MFC statisch" umzustellen?
-
Vielen Dank erstmal für die schnelle Antwort.
Wo stellt man die Release-Config auf statisch?
-
Na im Projekt-Einstellungs-Fenster, dort wo du die "MFC in einer Statischen Bibliothek verwenden"-Geschichte einstellen kannst, einfach oben die Config auf "Release" umstellen.
-
Achso, das war gemeint. Das hab ich auf Release stehen.
Depency Walker liefert mir folgende Meldungen - Alle werden nicht gefunden:
- API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
- API-MS-WIN-Core-PRIVATEPROFILE-L1-1-1.DLL
- API-MS-Win-SERVICE-PRIVATE-L1-1-1.DLL
- API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL
- EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL
- IESHIMS.DLL
-
Das sind alles keine echten Probleme.
Aber darum geht's auch nicht.Du sollst DependencyWalker verwenden um zu gucken welches Modul dir die mfc120ud.dll reinzieht.
-
Achso, ok.
Könntest du mir sagen wie dies funktioniert?
Kenne dieses Tool leider nicht.
-
- Mach deine .EXE im DepencyWalker auf.
- Such in der Modul-Liste die MFC DLL.
- Wähl "Highlight Matching Module in Tree" im Kontextmenu der Zeile der MFC DLL aus.
- Guck wo du im Tree stehst - also über welches Modul die MFC DLL reingezogen wird.
-
Vielen Dank nochmals.
Jetzt bin ich bei dem Tree und weiß nicht weiter. Wie genau finde ich heraus woran das Problem liegt und wie behebe ich dies?
Anbei mal ein Link zu dem Tree. Ich verstehe da irgendwie nichts.
https://www.dropbox.com/s/www9748d8vjuq03/MFC120UD.JPG
Danke!
-
Naja jetzt siehst du dass deine .exe direkt selbst die MFC DLL benötigt (die MFC DLL hängt im Tree ja direkt unter der .exe drunter). Die MFC DLL wird also schonmal nicht (oder nicht nur) durch eine andere DLL reingezogen.
D.h. du hast entweder deine .exe eben NICHT auf "statically link to MFC" umgestellt, oder du linkst in der .exe eine statische LIB die die MFC DLL einbindet.
Und natürlich solltest du 64 Bit .exen auch mit dem 64 Bit Dependency-Walker aufmachen.
-
Zudem ist das ein Debug Build.