Eigene DLL
-
hallo bin gerade deibei mich mit der erstellung von eigenen dll's zu
beschäftigen und habe dabei leider einige probleme. und zwar kann ich
nach dem einbinden in meine exe die funktionen der von mir erstellten
dll nicht verwenden.. hier mal der source://---- DIE DLL //--------------------------------------------------------------------------- #include <vcl.h> #include <windows.h> #include <stdio.h> BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved) { BOOL bResult = TRUE; // Dispatch this main call based on the reason it was called. switch (fwdreason) { case DLL_PROCESS_ATTACH: printf("<DLL> Attached \n"); break; case DLL_PROCESS_DETACH: printf("<DLL> Detached\n"); break; default: break; } return (bResult); } void __declspec(dllexport) __stdcall myfunct(void){ printf("<DI> TEST"); }
///--- DIE EXE #pragma hdrstop #include <windows.h> #include <stdio.h> //--------------------------------------------------------------------------- #pragma argsused typedef void (__stdcall *myfunctPtr)(void); myfunctPtr myfunct; int main(int argc, char* argv[]) { HANDLE hDLL; hDLL=LoadLibrary("project1.dll"); if(!hDLL){ printf("<EF> Cant Find [myfunction.dll] %08X!\n",GetLastError()); } myfunct=(myfunctPtr)GetProcAddress(hDLL,"myfunct"); if(!myfunct){ printf("<EF> Cant do myfunction [project1.dll] %08X!\n",GetLastError()); return(FALSE); } else { myfunct(); } getc(stdin); return 0; } /// ************ END EXE
nur springt mir das ding immer auf die fehlermeldung... die DLL wird
geladen nur die function steht anscheinend nicht zur verfügung,
irgendwelche ideen?ps.: GetLastError gibt 0x0000007F zurück bei der myfunct validierung!
ja wird mit BC++ Explorer compiliert...
-
Wenn's eine C++-DLL ist, musst du deine exportierten Funktionen in extern "C" einschließen.
extern "C" { //deine Funktionsdeklarationen }
Ich glaube es reicht, wenn du das mit den Prototypen machst. Doppelt schadet aber auch nicht.
Übrigens kannst du dir mit dem Dependency Walker ansehen, welchen Effekt das hat...
-
ja jez funktionierts, danke