- Offizieller Beitrag
Hi,
ich habe gerade meine ersten Gehversuche mit C++ gemacht.
Es ist mir dann auch gelungen eine funktionierende Dll zu erstellen. (IDE: CodeBlocks, Kompiler: GNU GCC)
Soweit ich gelesen habe, soll das Voranstellen von "extern "C" __declspec(dllexport) ..." dafür sorgen, dass ich die Funktionen in der Dll auch mit dem vergebenen Namen ansprechen kann.
Es wird jedoch trotzdem an den Funktionsnamen "@8" angehängt, wobei die Zahl abhängig ist vom belegten Speicherplatz.
Hier mal meine Test-Dll:
main.h
C
#ifdef BUILD_DLL
/* DLL export */
#define EXPORT __declspec(dllexport)
#else
/* EXE import */
#define EXPORT __declspec(dllimport)
#endif
#define WIN32_LEAN_AND_MEAN // Selten verwendete Teile der Windows-Header nicht einbinden.
// Windows-Headerdateien:
#include <windows.h>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Alles anzeigen
main.cpp
Code
#include "main.h"
extern "C" {
__declspec(dllexport) int _stdcall Addi (int,int);
__declspec(dllexport) int _stdcall Multi (int,int);
}
__declspec(dllexport) int _stdcall Addi (int x1,int x2)
{
int returnvar;
{
returnvar=x1 + x2;
}
return returnvar;
}
__declspec(dllexport) int _stdcall Multi (int x1,int x2)
{
int returnvar;
{
returnvar=x1 * x2;
}
return returnvar;
}
Alles anzeigen
Muß ich da noch weitere Angaben machen oder Kompilerdirektiven verwenden?