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??
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.
SwordMaster Geschrieben 25. März 2005 Autor Geschrieben 25. März 2005 tja, geändert und schon gehts... und wieder mal :uli vielen dank.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden