MFC Projekt in Module aufteilen
-
Hallo,
ich versuche ein MFC Projekt in VS2005 in Module zu unterteilen.
Dazu habe ich in einer leeren Solution eine MFC Applikation erstellt mit folgenden Einstellungen:MFC Applikation
SingleDocument
kein Doc/View
MFC Shared LibraryDanach ein Win32 Projekt:
Static Library
Support für MFCKompiliert => alles sauber.
Zum Testen habe ich die Window-Klasse aus der Applikation in die
Library gepackt und aus der App verbannt.
In den Projekt Dependencies die Lib hinzugefügt und in der stdafx.h
die Headerdatei aus der Lib für die Window-Klasse inkludiert.Anschließend alles Übersetzt und folgende Warnungen erhalten:
LINK : warning LNK4098: defaultlib 'mfc80ud.lib' conflicts with use of other libs; use /NODEFAULTLIB:library LINK : warning LNK4098: defaultlib 'mfcs80ud.lib' conflicts with use of other libs; use /NODEFAULTLIB:libraryOkay, scheint so als ob in eines der Projekte gegen die statische MFC gelinkt wird.
Projekteinstellungen geprüft aber leider verwenden alle Projekte laut Einstellungen die gleichen DLLs.MFC Shared DLL
Multithreaded Runtime Debug DLLScheint aber so, als ob die Lib statisch gegen die MFC linkt.
Hat sich jemand schon mal mit der Aufteilung einer Anwendung befasst?
Ist der Weg so überhaupt möglich?Ich möchte die Module nicht als DLL ausliefern, da dieses generelle Module
sein sollen und maximal nur die MFC und die Runtime mitgegeben werden sollen.Letzte Alternative wäre natürlich den Source in Unterverzeichnisse einzubinden,
was ich vermeiden möchte, da eine fertige Lib von dritten nicht mehr bearbeitet werden soll.Auch möchte ich nicht statisch linken, da ich die dynamic für spätere PlugIns benötige. (AfxLoadLibrary z.B. ist glaube ich nicht möglich beim statischen linken).
Hoffe das jemand sich schon mal mit der Thematik auseinadergesetzt hat, oder alternativen kennt.
Grüße,
Frank
-
Hast Du fremde DLLs noch eingebunden?
Rebuild All hast Du wahrscheinlich schon gemacht!Verwende die Linker Option /VERBOSE, dann siehst Du wer die statische Lib verwenden will.
Ich verstehe dennoch nicht, warum Du Deine Module nicht in eine DLL auslagerst.
-
Hallo Martin,
danke für den Hinweis mit der Linker Oprion. Die Ausgabe hat mich
zum Ziel gebracht!Das Problem war, dass die statischen Librarys gegen die Unicode DLL
der MFC linken, und die MFC Applikation gegen Multibyte.Einstellungen unter Konfiguration->General->Character Set angepasst
und so läuft es.Das scheint bei VS2005 noch etwas gewöhnungsbedürftig, das man daran denkt.
Warum wird das im Wizard eigentlich nicht erfragt

Gruß,
Frank
-
VS2005 hat als Target XP, und VS2007 wird Vista als primäres Target haben.
Unicode ist da eben Standard,ich wüsste gar keinen Grund auf MBCS zu arbeiten. Es ist langsamer. ComCtl 6.0 arbeiten fehlerhaft etc....
-
Warum wird das im Wizard eigentlich nicht erfragt
Wird es doch, nur ist die CheckBox auf Unicode eingestellt (weil dies wie Martin schreibt, jetzt Standard ist) und man vergißt leicht das Umstellen.
ich wüsste gar keinen Grund auf MBCS zu arbeiten
Es gibt schon Gründe, z.B. bei zig Altquellen scheitert man irgendwann wegen fehlender Arbeitszeit zur Überarbeitung.