Tiens, moi je fais ca comme ca, c'est plus simple je trouve.
// Source DLL ///////////////////////////////////////////////////////
#include "stdafx.h"
#include "Dll.h"
#include <string.h>
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
return TRUE;
}
CDll :: CDll(void)
{
strcpy(chaine, "hi ho");
return;
}
DLL_API CDll *initialise(void)
{
CDll *Temp = new CDll();
return Temp;
}
//HEADER DLL ///////////////////////////////////////////////////////
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
class DLL_API CDll
{
public:
CDll(void);
char chaine[256];
};
DLL_API CDll *initialise(void);
// Main ///////////////////////////////////////////////////////
#include "stdafx.h"
#include <windows.h>
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
class DLL_API CDll
{
public:
CDll(void);
char chaine[256];
};
#include <stdio.h>
int main(int argc, char* argv[])
{
HMODULE module = LoadLibrary("Dll.dll");
CDll* (*ok)(void) = NULL;
ok = (CDll*(*)(void)) GetProcAddress(module, "?initialise@@YAPAVCDll@@XZ");
CDll *maclasse = (*ok)();
printf("%s", maclasse->chaine);
return 0;
}