Ausführen der exe.-Datei



  • Hi,

    Ich habe ein Programm gecodet und eine fehlerlose exe.-Datei erstellt. Wenn ich nun auf Erstellen->Ausführen der XXX.exe(F5) klicke läuft mein Programm wunderbar. Führe ich die exe.-Datei allerdings im Debugordner, der sich im Projektverzeichnis befindet, selbst per Mausklick aus, so kommt es zu Speicherzugriffsfehler.
    Woran könnte dies liegen oder worin besteht der Unterschied zwischen dem Ausführen über Visual C++ und dem Ausführen per Klick auf die exe.-Datei?

    Gruß Crabbe



  • Kompilier das Projekt doch mal im Release Modus, evtl. bringt
    dir das schon den Fehler. Ansonsten musst du halt mal deinen
    Code Überprüfen, und versuchen den Fehler einzugrenzen.

    Devil



  • vermtulich greifst du auf eine datei zu die in deinem projektordener liegt aber nicht in deinem debugordner...
    ich würde einfach mal versuchen die exe aus dem debugordner eine ebene höher zu kopieren...



  • Windalf schrieb:

    vermtulich greifst du auf eine datei zu die in deinem projektordener liegt aber nicht in deinem debugordner...
    ich würde einfach mal versuchen die exe aus dem debugordner eine ebene höher zu kopieren...

    funzt nicht, habe ich schon probiert. Auf welchen Ordner greift den VC++ zu, wenn es die exe.-Datei ausführt?

    devil81 schrieb:

    Kompilier das Projekt doch mal im Release Modus, evtl. bringt
    dir das schon den Fehler. Ansonsten musst du halt mal deinen
    Code Überprüfen, und versuchen den Fehler einzugrenzen.

    Devil

    werde ich mal machen.

    Gruß Crabbe



  • So, hab jetzt mal mein Projekt im Releasemodus kompiliert und gelinkt.
    Beim Linken erscheinen dann diese Fehler:

    Linker-Vorgang läuft...
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glHint@8
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glDepthFunc@4
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glClearDepth@8
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glClearColor@16
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glShadeModel@4
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glEnable@4
    model.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glEnable@4
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol _gluPerspective@32
    Animation.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__glLoadIdentity@0

    Das geht noch so weiter bis 44 Fehler, die alle in Verbindung mit OGL oder GLUT stehen. Ich weiß jetzt nicht, ob das hier das richtige Forum ist oder ob ich lieber im Spiele-/Grafikforum posten sollte.

    Gruß Crabbe



  • na dann musst du mal gucken was für projektsettings du bei deiner debugversion hast die du im release nicht gemacht hast...

    aber das hier ist doch ein ziemliches rumgerate und glaskugellesen... poste doch mal die codestelle an der dein programm den abgang macht...



  • Du hast vergessen die Libarys einzubinden für die Releaseversion.

    Devil



  • devil81 schrieb:

    Du hast vergessen die Libarys einzubinden für die Releaseversion.

    Devil

    Gut, das hab ich jetzt auch gemacht, aber es gibt beim Linken erneut Fehler. Ich glaube die Bibliotheken behindern sich gegenseitig bzw. es findet eine "doppel Definition" statt:

    Linker-Vorgang läuft...
    msvcrt.lib(MSVCRT.dll) : error LNK2005: _exit bereits in LIBC.lib(crt0dat.obj) definiert
    msvcrt.lib(MSVCRT.dll) : error LNK2005: _strncpy bereits in LIBC.lib(strncpy.obj) definiert
    msvcrt.lib(MSVCRT.dll) : error LNK2005: _fprintf bereits in LIBC.lib(fprintf.obj) definiert
    msvcrt.lib(MSVCRT.dll) : error LNK2005: _fclose bereits in LIBC.lib(fclose.obj) definiert
    msvcrt.lib(MSVCRT.dll) : error LNK2005: __isctype bereits in LIBC.lib(isctype.obj) definiert
    LIBC.lib(crt0init.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    Release/Animation.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden
    Fehler beim Ausführen von link.exe.

    Animation.exe - 6 Fehler, 1 Warnung(en)
    --------------------Konfiguration: Animation - Win32 Debug--------------------

    Animation.exe - 0 Fehler, 0 Warnung(en)

    Windalf schrieb:

    aber das hier ist doch ein ziemliches rumgerate und glaskugellesen... poste doch mal die codestelle an der dein programm den abgang macht...

    So hab jetzt mal ein ASSERT eingebaut. Hier die Codezeilen wo ein Logikfehler vorliegt:

    model.cpp 
    //... 
    
    frame = pJoint->m_currentRotationKeyframe; 
            while ( frame < pJoint->m_numRotationKeyframes 
                    && pJoint->m_pRotationKeyframes[ frame ].m_time < time ) 
            { 
                frame++; 
    
            } 
            pJoint->m_currentRotationKeyframe = frame; 
    
            if ( frame == 0 ) 
            { 
                transform.setRotationRadians( pJoint->m_pRotationKeyframes[ 0 ].m_parameter ); 
            } 
            else 
            { 
                if ( frame == pJoint->m_numRotationKeyframes ) 
                { 
                    transform.setRotationRadians( pJoint->m_pRotationKeyframes[ frame - 1 ].m_parameter ); 
                } 
                else 
                { 
                    assert( frame > 0 && frame < pJoint->m_numRotationKeyframes );/////////////////////hier assert-Fehler
    
                    const Model::Keyframe& curFrame = 
                        pJoint->m_pRotationKeyframes[ frame ]; 
                    const Model::Keyframe& prevFrame = 
                        pJoint->m_pRotationKeyframes[ frame - 1 ]; 
    
                    float timeDelta = curFrame.m_time - prevFrame.m_time; 
                    float interpValue = ( float ) ((time - prevFrame.m_time) 
                                                   / timeDelta); 
    
                    assert( interpValue >= 0 && interpValue <= 1 ); 
    
    //...
    

    Der Fehler, der beim Ausführen der exe.-Datei per Mausklick erscheint, aber NICHT beim Ausführen mit VC++:

    Assertion failed: frame > 0 && frame < pJoint->m_numRotationKeyframes, file C:\
    ...Animation\model.cpp, line 435

    abnormal program terminaton

    Entweder frame oder m_numRotationKeyframes besitz einen falschen Wert. Ich glaub aber eher das letztere.

    Hab einen ähnlichen Fehler mit diesem Programm, dass ein Model lädt schon einmal gepostet:
    http://www.c-plusplus.net/forum/viewtopic.php?t=71975&highlight=problem+modelloading

    Gruß Crabbe


Anmelden zum Antworten