SwordMaster Geschrieben 25. März 2005 Geschrieben 25. März 2005 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?? Zitieren
Klotzkopp Geschrieben 25. März 2005 Geschrieben 25. März 2005 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. Zitieren
SwordMaster Geschrieben 25. März 2005 Autor Geschrieben 25. März 2005 tja, geändert und schon gehts... und wieder mal :uli vielen dank. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.