Dll laden verursacht Programm absturz



  • Hallo,

    ich mache folgendes:

    typedef gfx_version_base* (*DLLengine_1)();
    DLLengine_1		pEngine_Launcher;
    gfx_version_base	*Engine_Launcher;
    
    ......
    
    handle = LoadLibrary(TEXT("engine.dll")); 
    if (handle != NULL)
    {
    	MessageBox("Engine.dll testen 2", NULL, MB_OK );
    	pEngine_Launcher = (DLLengine_1)GetProcAddress(handle, "Class_gfx_version");
    	if (!pEngine_Launcher)
    		MessageBox("Engine.dll Fehler", NULL, MB_OK );
    	else
    	{
    		MessageBox("Engine.dll testen 3", NULL, MB_OK );
    		Engine_Launcher = pEngine_Launcher();
    		MessageBox("Engine.dll testen 4", NULL, MB_OK );
                    .......
            }
    }
    

    Auf meinem PC wo ich das ganze erstelle läuft alles super, nur wenn ich die Release Version mache und das ganze auf einem anderen PC starten möchte kommt das Programm nur bis zur MessageBox mit testen 3, dann schliest sich das Programm einfach, ohne Fehlermeldung.

    Ich mache das ganze mit VC++ 2010 und das VC++ redistributable package ist auch auf dem anderen Rechner installiert.

    Was mache ich falsch ?


  • Mod

    Remote debuggen...



  • So auf den ersten Blick würde ich mal die DLL Version von engine.dll und deren Abhängigkeiten überprüfen. Gegen welche DLL Version verlinkst du dein Programm und welche Version liegt auf dem Rechner auf dem es abstürzt ?
    Wenn du die engine.dll von dem Zielrechner auf deinem Entwicklungsrechner kopierst, stürzt es dann auch ab ?



  • BlackWolf schrieb:

    Auf meinem PC wo ich das ganze erstelle läuft alles super, nur wenn ich die Release Version mache und das ganze auf einem anderen PC starten möchte kommt...

    Was daraus nicht so ganz eindeutig ist:
    Läuft auch auf Deinem PC sowohl die Debug- als auch die Release Version?
    Ich meine, manchmal kann es einfach daran liegen, daß die Applikation eine Release-version ist, während die DLL noch in der Debug-Version ist?

    BlackWolf schrieb:

    nur wenn ich die Release Version mache und das ganze auf einem anderen PC starten möchte

    Und wenn Du dort die Debug-Version startest? Unterschied?
    Des weiteren setze ich natürlich voraus, daß sowohl Deine Applikation als auch die DLL für das Zielsystem geeignet ist. Z.B. DLL ist nur für 64bit Windows geeignet usw.

    HTH,
    Martin


Log in to reply