Was bedeutet dieser Fehler?



  • Unbehandelte Ausnahme in Tischtennis.exe (Tribased.dll): 0xC0000005 Acces Violation

    Entstand beim Zurückkehren von WinMain, Fehler entsteht bei Zeile:

    return 0;

    Woran kann das liegen, und was besagt der Fehler eigentlich genau?

    hier der code, es ist noch nicht so veil, daher zeige ich fast alles :-)...

    // Datei WinMain.cpp
    #include "Tribase.h"
    #include "Tischtennis.h"
    #include "Allgemeines.h"
    
    tbDirect3D* g_pDirect3D;  // globales 3d-Objekt
    tbTextureManager* g_pTextures;  // globales Texturmanagerobjekt
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    
        CTischtennis App;
        if(App.Init() == 2)
            MessageBox(NULL, "Vollständig initialisiert!", "OK!", MB_OK);
        else MessageBox(NULL, "Fehler", "Fehler", MB_OK);
    
        App.Unload();
    
        return 0; // hier entsthet der Fehler:
    }
    
    // Datei Tischtennis.cpp
    
    #include "Tribase.h"
    #include "Tischtennis.h"
    #include "Allgemeines.h"
    
    extern tbDirect3D*                      g_pDirect3D;
    extern tbTextureManager*            g_pTextures;
    
    CTischtennis::CTischtennis()
    {
        m_fTime = 0;
    
    }
    
    CTischtennis::~CTischtennis()
    {
        Unload();
    }
    
    int CTischtennis::Init()
    {
      tbInit();  // Tribase initialisieren
      int Result;
      if(Result = tbDoConfigDialog(&this->m_Config))
      {
        if(Result == TB_CANCELED) return 0;
        else
        {
            // Feher im Config-Dialog
            MessageBox(NULL, "Fehler im Konfigurationsdialog", "Fehler!", MB_OK);
            return 1;
        }
      }
    
      g_pDirect3D = new tbDirect3D;
      if(g_pDirect3D->Init(&m_Config, "Tischtennis Version 0.1", NULL, NULL))
      {
        // Fehelr beim Initailisieren...
        MessageBox(NULL, "Fehler biem g_pDiredt3D->Init", "Fehler", MB_OK);
        Unload();
        TB_ERROR("Fehler bim Initatialisieren von tbDirect3D", 1);
      }
    
      g_pTextures = new tbTextureManager;
      if(g_pTextures->Init(16))
      {
        MessageBox(NULL, "Fehler beim Texturmanager initialisieren...", "Fehler", MB_OK);
        Unload();
        TB_ERROR("Fehelr TExturenmanager...", 1);
      }
    
      return 2;
    
    }
    
    tbResult CTischtennis::Unload()
    {
      g_pDirect3D->Exit();        // tbD3D löschen
      TB_SAFE_DELETE(g_pDirect3D);
    
      g_pTextures->Exit();            // texturen löschen
      TB_SAFE_DELETE(g_pTextures);
    
      return TB_OK;
    
    }
    

    Ich arbeite mit der Tribase-Engine aus David Scherfgens Buch, definiert in Tribased.dll
    und TB_OK hat den Wert 0.

    Was ist da jetzt falsch dran?

    Gruß, Maxi

    [ Dieser Beitrag wurde am 14.06.2003 um 17:24 Uhr von Maxi editiert. ]



  • Für solche Fragen habe ich doch extra ein Forum auf meiner Seite eingerichtet...
    Tipp: tbDirect3D und tbTextureManager sind statische Klassen, also brauchst Du davon keine Instanz anzulegen.

    tbDirect3D::Init reicht also, ebenso wie tbTextureManager::Init. Und löschen musst Du sie am Ende auch nicht.


Anmelden zum Antworten