J'essaye de charger dynamiquement une DLL en utilisant LoadLibrary()
, qui fonctionne, mais je ne peux pas obtenir l'adresse de la fonction dans la DLL que j'essaie d'appeler.pourquoi ne pas avoir accès à ma fonction DLL
fonction DLL: (dans le fichier RPC)
_declspec(dllexport) void MyDllFunc()
{
printf("Hello from DLL");
}
Indicatif téléphonique:
typedef void (*MyDllFuncPtr)();
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE LoadMe;
LPCWSTR str = L"C:\\Users\\Tony\\Documents\\Visual Studio 2008\\Projects\\DLL Loading\\Release\\MyDll.dll";
LoadMe = LoadLibrary(str);
if(LoadMe != 0)
printf("Successfully Loaded!\r\n");
else
printf("Loading Failed \r\n");
MyDllFuncPtr func;
func = (MyDllFuncPtr)GetProcAddress(LoadMe, "MyDllFunc");
if (func != NULL)
func();
FreeLibrary(LoadMe);
}
func retourne NULL !!!
Qu'est-ce que je fais mal?
Ceci est un projet de console Win32.
Si vous êtes dll est écrit en C++, alors vous devez faire correspondre le mangeage du nom C++. Affichez la table d'exportation et examinez le nom de la fonction. Ou déclarer la fonction dans la DLL en tant que extern C, ce qui supprime le mangeage du nom C++. –