Veröffentlicht 25. März 200520 j Hallo Leute. ich habe in einer DLL folgende Funktion extern "C" __declspec(dllexport) CDialog** GetDialog( ) { CDialog* dialogs[1]; dialogs[0] = new CColorDialog; return dialogs; } in meinem projekt rufe ich die funktion so auf: HINSTANCE m_hHookDll; if(!(m_hHookDll = LoadLibrary("C:\\WinLab\\DynamicTab\\Debug\\DynamicTab.dll"))) MessageBox("failed"); typedef CDialog** (*GetDialog)( ); GetDialog my2; my2 = (GetDialog)GetProcAddress(m_hHookDll,"GetDialog"); CDialog** test = my2( ); test[0]->DoModal(); aber bei test[0]->DoModal(); stürzt mein programm ab!! Ich benutze CDialog** weil ich in der DLL Funktion auch mehrere "Dialoge" zurückgeben will... Definiere ich diese funktion direkt in meinem Projekt (und nicht in einer dll) funktioniert es. aber wenn ich sie aus einer dll lade, funktioniert es nciht. könnt ihr mir helfen??
25. März 200520 j CDialog* dialogs[1]; dialogs[0] = new CColorDialog; return dialogs; Du gibst die Adresse einer lokalen Variablen zurück. Diese Variable (in diesem Fall das Array dialogs) existiert nicht mehr, nachdem die Funktion beendet ist, der Zeiger ist ungültig. Da kann alles passieren.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.