jokey2
Erfahrenes Mitglied
Hallo Gemeinde!
Ich hab' hier ein ziemlich fieses Problem mit dem Laden Von Dll's und Funktionen daraus.
Hier ist die DLL:
Ich will also erstmal nur einen CString ausgeben.
Die Dll und den Funktionspointer hole ich mir so:
Nun ist es aber so, daß mir der LoadLibrary-Aufruf den Wert 0x10000000 zurückliefert, was mit schon etwas seltsam vorkommt. Der Aufruf von GetProcAddress liefert dann auch NULL zurück.
Wenn mir einer sagen könnte, was da falsch läuft, wäre ich echt dankbar!
Ich hab' hier ein ziemlich fieses Problem mit dem Laden Von Dll's und Funktionen daraus.
Hier ist die DLL:
Code:
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Entfernen Sie dies, wenn Sie lpReserved verwenden
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("PVCSTEST.DLL Initializing!\n");
// One-Time-Initialisierung der Erweiterungs-DLL
if (!AfxInitExtensionModule(PVCSTestDLL, hInstance))
return 0;
new CDynLinkLibrary(PVCSTestDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("PVCSTEST.DLL Terminating!\n");
// Bibliothek vor dem Aufruf der Destruktoren schließen
AfxTermExtensionModule(PVCSTestDLL);
}
return 1; // OK
}
__declspec(dllexport) CString GetVCSName()
{
return CString("Merant Version Manager");
}
Die Dll und den Funktionspointer hole ich mir so:
Code:
int CPVCSTestAppDlg::OpenDll(CString cstrDllPath)
{
HINSTANCE hLib;
LPGETNAMEFUNC pGetNameFunc;
CString cstrVcsName;
hLib = LoadLibrary(cstrDllPath);
if(hLib == NULL) return -1;
pGetNameFunc = (LPGETNAMEFUNC)GetProcAddress(hLib, "GetVCSName");
if(pGetNameFunc == NULL) return -2;
cstrVcsName = pGetNameFunc();
return 0;
}
Wenn mir einer sagen könnte, was da falsch läuft, wäre ich echt dankbar!