C++ Dll: BeforeFreeLibrary möglich?
-
Hallo erstmal,
ich entwickle eigentlich in Delphi, versuche mich aber gerade an einer DLL in C++. Nun habe ich eine Funktion, die erst aufgerufen werden soll, wenn die DLL mit FreeLibrary freigegeben wird.
Gibt es eine Möglichkeit ein "Before Free" in die DLL einzubauen? (Die DLL wird dynamisch geladen)
Gruß und Danke für die Hilfe
-
Im Standard-C++ nicht - da gibts auch keine DLLs. Vielleicht betriebssystemspezifisch oder compilerspezifisch. Dann wärst du im jeweiligen Unterforum allerdings besser aufgehoben.
-
Ist eigentlich WINAPI, schau dir aber mal die Funktion DllMain an (http://msdn.microsoft.com/en-us/library/ms682583%28VS.85%29.aspx.
Stichwort DLL_PROCESS_DETACH.
-
Danke erstmal,
OK, das hilft mir schon mal weiter. Also kann ich so etwas wie das hier benutzen um diese Events zu bekommenBOOL WINAPI DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserver) { switch(reason) { case DLL_PROCESS_DETACH: MessageBox ( NULL, "1", "DLL_PROCESS_DETACH", MB_OK); break; } }Jetzt bekomme ich folgende Fehler:
error LNK1169: one or more multiply defined symbols found
error LNK2005: _DllMain@12 already defined in dllmain.objIch benutze übrigens Visual Studio 2010 und (wenn ich das richtig verstanden habe) die WindowsAPI.
Edit: Könnte ein Mod den Thread nach WinAPI verschieben?
Edit2: Die Projektoptionen stehen auf "Use of MFC: Use Standard Windows Libraries"
-
Du kannst natürlich den Linker anweisen, den Fehler zu ignorieren (/FORCE). Dies ist aber in den seltensten Fällen eine gute Idee...
Ein ganz häufiger Fehler ist das Verwenden von statischen und dynamischen CRTs.
Für eine Beschreibung siehe hier (http://msdn.microsoft.com/de-de/library/72zdcz6f.aspx)
-
Haha, das passiert wenn man den Wald vor lauter Bäumen nicht sieht ^^
Ich habe übersehen das eine dllmain.cpp mit dem Projekt erstellt wurde...Jetzt funktioniert alles, vielen Dank

-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.