App in DLL
-
Hallo,
ich habe eine ausführbare MFC Anwendung als DLL Kompiliert.
Ich Lade diese .DLL aus einer Dialogbasierenden MFC Anwendung
mit LoadLibrary.Die so geladene App, findet jedoch seine Resourcen nicht, und
die Erstellung des MainWnd's der App in InitInstance()
schlägt fehl.Frage: Wie kann ich veranlassen das die in der DLL verpackten
app ihre resourcen findet.Vielen Dank für Hinweise
Kasten.
-
Liegt wohl daran, dass dein Ding die falsche HINSTANCE verwendet (die von der exe und nicht die von der dll) um auf die Ressourcen zuzugreifen. Ich hab aber keine Ahnung von MFC und kann dir daher leider nicht verraten, ob und wenn ja wo und wie du da die richtige HINSTANCE übergeben kannst...
-
Wenn Du eine DLL hast, muss an jedem Einsprungpunkt in die DLL AFX_MANAGE_STATE aufrufen.
Lies einfach die MSDN:
http://msdn.microsoft.com/en-us/library/zfz4xb9a.aspx
-
Hi,
Das mit den resourcen ist nun erledigt.
Anders formuliert: Ich habe eine MFC -Anwendung als DLL Kompiliert, alle
Modelle statische Bindung.Lade ich die DLL aus einer Dialogbasierenden Anwendung via ::LoadLibrary
wird auch die App in der DLL scheinbar korrekt ausgelöst, in InitInstance()
wenn das Fenster geöffnet werden soll, (ProcessShellCommand) kommt
diese Funktion nicht mehr zurück, wobei die Fenster CMainWnd und View
scheinbar korrekt initialisiert wurden.Fehlt es hier an der MessageLoop ?
Danke der Hinweise.
-
Du kannst/solltest in InitInstance keine anderen DLLs laden oder "Befehle" ausführen.
InitInstance ist die DllMain in einer MFC DLL und hier gibt es strenge Restriktionen! Es gibt einen LoadLock in DLLs.
Schau doch mal wo er stehen bleibt. Break All!
-
steht dort auch nicht so, die MFC Anwendung wurde als DLL Compliert,
und von Programm B später dynamisch geladen, alles funktioniert nun.Danke der Hinweise.