Problem beim Einbinden einer DLL
-
Ich habe Probleme damit, eine DLL in ein Projekt von mir einzubinden. Und zwar ist das diese hier:
#include <windows.h> #define EXPORT extern "C" __declspec(dllexport) EXPORT int test() { MessageBoxA(NULL,"test","TEST",MB_OK); return 0; }Wenn ich der DLL eine
DllMain()hinzufüge und dann eineMessageBox()aufrufe, wenncall == DLL_PROCESS_ATTACHist, wird dieMessageBox()aufgerufen... Aber nur dann... Merkwürdig...bool APIENTRY DllMain(HANDLE hModule, DWORD call, LPVOID lpReserved) { if(call == DLL_PROCESS_ATTACH) { MessageBox(NULL, "Dll Loaded...", "", MB_OK | MB_ICONWARNING); } return true; }Kann jmd. helfen?
Danke!
-
und was soll Daran merkwürdig sein

-
??????? schrieb:
und was soll Daran merkwürdig sein

Naja, die
MessageBoxA(NULL,"test","TEST",MB_OK);wird nicht aufgerufen. Warum?Das ist meine komplette DLL:
#include <windows.h> #define EXPORT extern "C" __declspec(dllexport) EXPORT int test() { MessageBoxA(NULL,"test","TEST",MB_OK); return 0; }
-
skullyan schrieb:
Warum?
skullyan schrieb:
if(call == DLL_PROCESS_ATTACH) { MessageBox(NULL, "Dll Loaded...", "", MB_OK | MB_ICONWARNING); }eine ganz normale if-bedingung eben
wenn die Bedingung in der Klammer(call==DLL_PROCESS_ATTACH) wahr ist wird deine Funktion aufgerufen und sonst eben nicht.außerdem warum sollte die Funktion test sonst ausgeführt werden? sie wird in der Dll nur definiert(fast wie in einer headerdatei; da wird eine funktion beim Kompilieren ja auchn icht ausgeführt...), um sie zu verwenden musst du sie irgendwie in ein anderes Programm (zB Konsolennwendung) importieren,
zB mit__declspec(dllimport) test();dort kannst du sie dann verwenden; eine dll ist nur eine Art Programmbibliothek.
edit: grundsätzlich geht das mit dlls so:
du schreibst dir eine dll die einige Funktionen beinhaltet(zB deine Funktion test()); diese Funktionen kannst du dann in einem anderen Programm (zB einer Konsolenanwendung) wieder importieren und praktisch so benutzen wie wenn du sie in der quelldate der Konsolenanwendung definiert hätest^^dlls dienen hauptsächlich dazu häufig benötigten code zur verfügung zu stellen sodass man ihn nicht jedesmal neu schreiben muss^^
mfg,
andi01.