//---- 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]!\n");
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?
ja wird mit BC++ Explorer compiliert...
> 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:
Der exportierte Funktionsname wird "mangled", d.h. automatisch
mit ein paar Zusatzzeichen versehen. �ffne die dll mal mit dem
"Dependency Walker" und guck Dir die Namen an. Dar�ber k�nnen
z.B. Funktionen mit �berladenen Parametern exportiert werden.
Das kannst Du mit einem extern "C" und einer def-Datei abstellen:
extern "C" void __declspec(dllexport) __stdcall myfunct(void) ...
Die project1.def Datei:
LIBRARY "project1.dll"
EXPORTS
myfunct
> ja wird mit BC++ Explorer compiliert...
BC++ Explorer kenn ich nicht. In VC++ kannst Du die def Datei bei
den Linker Input Properties als "Module Definition File" angeben.
--
SvenC
aah vielen dank SvenC, konnte es mit extern "C" abstellen