Dll Prob
-
Hi Ich hab volgenden code.
Dll = LoadLibrary("go.dll"); typedef int (__stdcall *IMPFUNC) (int, int); IMPFUNC DieDll; if (DllInstance) { try { DieDll = (IMPFUNC)GetProcAddress(Dll, "Go"); DieDll(12,14)); } catch(...){} } if (FreeLibrary(Dll)) Dll = NULL;
Warum bekomm ich da ne Zugriffsverletzung?
-
Geh doch erst mal im Debug-Modus Zeile für Zeile schrittweise durch um zu sehen, wo die Schutzverletzung auftritt ...
-
Überprüfe erstmal ob GetProcAddress() überhaupt einen gültigen Funktionszeiger zurückgibt.
-
ja, habe ich alles probiert, ab
DieDll(12,14));springt er raus-was nun?
-
sorry ich meine natürlich
DieDll(12,14);geht aber auch noch nicht
-
DieDll = (IMPFUNC)GetProcAddress(Dll, "Go"); if(DieDLL == NULL) { MessageBox(NULL, TEXT("Die Funktion Go konnte nicht geladen werden!"), NULL, MB_OK); }
-
ja, dank dir aber ich hab gesagt, das ich das doch schon probiert habe, ich bekomme die Zugriffsverletzung, wenn ich die funktion ausführen will.
-
Kann es sein, dass die Funktion selber eine AccessVoilation verursacht?
-junix
-
ja, weisste woran das liegt?
-
Also GetProcAddress liefert jetzt nicht NULL zurück?!
-
nein, leider nicht die funktion danach aber
-
Dann zeig uns doch mal den Code der Funktion.
-
Der Sinn meiner Dll:
extern "C" __declspec(dllexport) int Go(int, int); #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) { return 1; } int Go(int test, int test2) { ShowMessage(IntToStr(test)+IntToStr(test2)); return 1; }
Mein Programm:
String Result; DllInstance = LoadLibrary("dll.dll"); typedef int (__stdcall *IMPFUNC) (int, int); IMPFUNC DieDll; if (DllInstance) { DieDll = (IMPFUNC)GetProcAddress(DllInstance, "Go"); if (DieDll != NULL) Result = DieDll(12,14); if (Result != NULL) ShowMessage(Result); } if (FreeLibrary(DllInstance)) DllInstance = NULL;
-
typedef int (*IMPFUNC) (int, int);
Also das __stdcall aus dem typedef