Fehler beim dynamischen Linken von Dlls



  • Hallo,
    Neuerdings fällt mir auf, dass wenn ich Dlls dynamisch lade, das Programm nach der Ausführung der Funktion abkratzt.
    Ich muss jetzt immer try und catch benutzen, damit das Programm nicht abstürzt.

    Bsp:

    typedef int (WINAPI* IMPFUNC)(int,int); // Funktionspointer
    HMODULE hDll=LoadLibrary(_T("DynLib.dll"));
    if(hDll)
    {
    	IMPFUNC Test =(IMPFUNC) GetProcAddress(hDll,"Test");
    	TCHAR* buffer=new TCHAR[256];
    	if(Test)
    	{
    		try
    		{
    			int x=Test(50,5);
    			wsprintf(buffer,_T("Value returned from Dll: %d"),x);
    		} 
    		catch(...)
    		{
    			MessageBox(0,_T("Fehler"),0,0);
    		}
    	}
    	else
    	{
    		wsprintf(buffer,_T("%d"),GetLastError());
    	}
    	MessageBox(0,buffer,0,MB_ICONASTERISK);
    	delete [] buffer;
    	FreeLibrary(hDll);
    }
    else
    {
    	MessageBox(0,_T("DynLib.dll konnte nicht geladen werden!"),0,0);
    }
    

    Die Funktion 'Test' in DynLib.dll multipliziert die beiden Werte.
    Es wird auch 250 angezeigt!!!
    'Fehler' wird nicht angezeigt.
    Wenn ich aber den try-catch Block weglasse, so stürzt das Programm ab.(nur wenn die Funktion in der Dll Parameter hat)

    Muss ich jetzt immer diesen try-catch Block anlegen?



  • Und wie sieht Test aus? Benutzt die wirklich __stdcall (WINAPI) Aufrufkonvention?



  • Danke.
    Daran lag es wohl.


Anmelden zum Antworten