Ga naar inhoud

[Dev-Cplusplus] Aanroepen van DLL's


Anoniem2

Aanbevolen berichten

(Wat raar, waarom zou \'++\' in de titel niet mogen?)\r\n\r\nDag mensen,\r\n\r\nik loop al een tijdje te stoeien met het maken van DLL\'s, door middel van tutorials, maar het wil niet echt vlotten. Ik was benieuwd of er andere programmeurs waren die me hierbij konden helpen.\r\n\r\nHet maken van de DLL is geheel succesvol verlopen, na enige tijd; het was even stoeien, maar ik heb een mooi voorbeeld gevonden;\r\n[code]\r\n/* Replace \"dll.h\" with the name of your header */\r\n#include \"dll.h\"\r\n#include \r\n\r\nDllClass::DllClass()\r\n{\r\n\r\n}\r\n\r\n\r\nDllClass::~DllClass ()\r\n{\r\n\r\n}\r\n\r\n\r\nBOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,\r\n DWORD reason /* Reason this function is being called. */ ,\r\n LPVOID reserved /* Not used. */ )\r\n{\r\n switch (reason)\r\n {\r\n case DLL_PROCESS_ATTACH:\r\n break;\r\n\r\n case DLL_PROCESS_DETACH:\r\n break;\r\n\r\n case DLL_THREAD_ATTACH:\r\n break;\r\n\r\n case DLL_THREAD_DETACH:\r\n break;\r\n }\r\n\r\n /* Returns TRUE on success, FALSE on failure */\r\n return TRUE;\r\n}\r\n\r\nint MyDLLFunc1() {\r\n MessageBox(NULL,\"My DLL Function 1\",\"\",MB_OK);\r\n\r\n return true;\r\n}\r\n\r\nint MyDLLFunc2(char *TEXT) {\r\n MessageBox(NULL,TEXT,\"\",MB_OK);\r\n\r\n return true;\r\n}\r\n[/code]\r\n\r\nHet betreft hier dus C++ code, maar dat moge duidelijk zijn. Nu heb ik ook een .h (door dev-C++ aangemaakt) en een .def file (zelf gemaakt), ook geheel volgens de tutorial, maar daar staat verder weinig bijzonders in.\r\n\r\nHey compileren van de DLL gaat goed, maar het probleem ligt bij het aanroepen ervan, tevens in C++:\r\n[code]\r\n#include \r\n#include \r\n\r\nusing namespace std;\r\n\r\ntypedef UINT (CALLBACK* LPFNDLLFUNC1)(VOID);\r\ntypedef UINT (CALLBACK* LPFNDLLFUNC2)(LPCSTR);\r\n\r\nHINSTANCE hDLL; \r\nLPFNDLLFUNC1 MyFunc1; \r\nLPFNDLLFUNC2 MyFunc2;\r\nUINT uReturnVal;\r\n\r\nint main() {\r\n\r\n hDLL = LoadLibrary(\"ProjectDLL.dll\");\r\n\r\nint i;\r\n\r\n cin >>i;\r\n\r\n if (hDLL != NULL)\r\n {\r\n cout << \"DLL gevonden.\\n\";\r\n \r\n MyFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,\"MyDLLFunc1\");\r\n MyFunc2 = (LPFNDLLFUNC2)GetProcAddress(hDLL,\"MyDLLFunc2\");\r\n\r\n if (!MyFunc1 || !MyFunc2)\r\n {\r\n //Show error message\r\n cout << \"jammer.\";\r\n cin >>i; // <--- hier loopt ie dus op vast\r\n FreeLibrary(hDLL); \r\n return false;\r\n }\r\n else\r\n {\r\n cout << \"succes!\";\r\n uReturnVal = MyFunc1();\r\n uReturnVal = MyFunc2(\"HELLO WORLD!\");\r\n }\r\n }\r\n else\r\n {\r\n cout << \"DLL could not be found!\";\r\n }\r\n \r\n cin >> i;\r\n \r\n return true;\r\n}\r\n[/code]\r\n\r\nIk heb zelf wat couts neergezet met commentaar, want in eerste instantie sloot het programma direct af. Het blijkt nu dat de DLL wel gevonden wordt, maar dat de functies erin niet herkend worden. Hoe kan dit, en hoe verhelp ik dit?!?\r\n\r\nAnthony
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...