Debug Assertion Failed!



  • Hallo zusammen,

    VC6 SP5
    Win 2000 Prof. SP 4

    Ich bekomme immer folgende Fehlermeldung:

    Debug Assertion Failed!
    afxwin1.inl Line:22
    Fehler tritt an dieser Stelle auf:

    // Perform specific initializations
    	if (!pThread->InitInstance()) //hier tritt Fehler auf
    	{
    		if (pThread->m_pMainWnd != NULL)
    		{
    			TRACE0("Warning: Destroying non-NULL m_pMainWnd\n");
    			pThread->m_pMainWnd->DestroyWindow();
    		}
    		nReturnCode = pThread->ExitInstance();
    		goto InitFailure;
    	}
    

    ich habe auch schon im web gesucht. Habe aber für mich nichts verständliches gefunden. Könnte mir bitte jemand weiterhelfen ?

    Danke im voraus



  • Zeig mal bitte die Zeile in afxwin1.inl, da muss was mit

    ASSERT(/*Was ihn stört*/);
    

    stehen.



  • Steht doch in deinem Post was das Problem ist

    Warning: Destroying non-NULL m_pMainWnd

    kann es sein dass du dein MainWnd zerstören willst??



  • Da der Fehler eine if höher auftritt würde ich eher darauf tippen, dass mit pThread etwas nicht stimmt.



  • 😞 Bist halt einfach erfahrener! 😉



  • @Polofreak: Nein möchte ich nicht, mal zumindest nicht bewusst oder absichtlich.

    @estartu_de:

    ASSERT(hPrevInstance == NULL);
    

    Danke für die schnelle Antworten



  • Ist über oder unter der Zeile noch ein Kommentar?

    Es ist folgendes passiert:
    Da zeigt ein Zeiger auf was - darf er aber eigentlich nicht.
    Nun ist es an dir, rauszufinden, woran das liegt und wie man das wegmacht.

    Startest du z.B. zum zweiten Mal? Schau mal, wo das hPrevInstance herkommt. 🙂

    Sorry, ich kann dir nur beim Suchen helfen - mit Threads bin ich leider noch nicht so erfahren.



  • Hier mal die ganze Funktion:

    /////////////////////////////////////////////////////////////////////////////
    // Standard WinMain implementation
    //  Can be replaced as long as 'AfxWinInit' is called first
    
    int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    	LPTSTR lpCmdLine, int nCmdShow)
    {
    	ASSERT(hPrevInstance == NULL);
    
    	int nReturnCode = -1;
    	CWinThread* pThread = AfxGetThread();
    	CWinApp* pApp = AfxGetApp();
    
    	// AFX internal initialization
    	if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
    		goto InitFailure;
    
    	// App global initializations (rare)
    	if (pApp != NULL && !pApp->InitApplication())
    		goto InitFailure;
    
    	// Perform specific initializations
    	if (!pThread->InitInstance()) //hier tritt Fehler auf
    	{
    		if (pThread->m_pMainWnd != NULL)
    		{
    			TRACE0("Warning: Destroying non-NULL m_pMainWnd\n");
    			pThread->m_pMainWnd->DestroyWindow();
    		}
    		nReturnCode = pThread->ExitInstance();
    		goto InitFailure;
    	}
    	nReturnCode = pThread->Run();
    

    Also das Programm lief bisher einwandfrei. Ich wollte dann das ganze unicodefähig programmieren. Also hab ich dann #define _UNICODE in jeder Klasse angegeben und als entryPoint wWinMainCRTStartup festgelegt. Seitdem kommt diese Meldung, mache ich die Änderungen rückgängig kommt die Meldung nicht mehr.



  • Ist das jetzt die Funktion wo der ASSERT steht oder die wo der Fehler auftritt (die wäre es laut Kommentar)? 😕

    Weil gleich die erste Zeile kommt mir so bekannt vor.

    Hast du den Kommentar über der Funktion mal gelesen? Vielleicht ist der ja ein Hinweis. 🙂



  • beides, assert steht drin und Fehler tritt auf.

    hab den kommentar schon gelesen, aber ein Can be klingt eher wie falls man zeit und lust hat... 🙂



  • Ich habs mal durch Google gejagt:
    http://dev.mainsoft.com/Default.aspx?tabid=101

    Aber ich weiß sonst echt nicht mehr weiter. 😞



  • hab es jetzt gelöst... lag wohl an falschen Einstellungen im Projekt paar mfc42*.lib ignorieren lassen ... paar mfc42u*.lib einbinden und dann noch alles richtig machen dann gehts auch schon. trotzdem vielen dank für deine hilfe.


Anmelden zum Antworten