Problem mit einer kleinen Applikation -> Kompilierung abgeschlossen aber Absturz bei der Ausführung...



  • Hallo 🙂

    Ich bin neu hier und auch was C++-Programmierung angeht (seit max. 2 Tagen dabei 😉 )... seid also bitte gnädig mit mir... Ich habe hier einen kleinen Code geschrieben der zwar kompiliert wird, mir aber, wenn ich die kompilierte EXE dann aufrufe direkt abschmiert und die Benachrichtigungsgeschichte an Microsoft senden will. (ihr seht, ich bin auf ner WindowsXP-Maschine unterwegs).

    #include "Presenter_wxwidgetsApp.h"
    
    //(*AppHeaders
    #include "Presenter_wxwidgetsMain.h"
    #include <wx/image.h>
    
    IMPLEMENT_APP(Presenter_wxwidgetsApp);
    bool Presenter_wxwidgetsApp::OnInit()
    {
        //(*AppInitialize
        bool wxsOK = true;
        wxInitAllImageHandlers();
        if ( wxsOK ){
        	Presenter_wxwidgetsFrame* Frame = new Presenter_wxwidgetsFrame(0);
        	Frame->Show();
        	SetTopWindow(Frame);
    
    	    // AUFRUF DER PROGRAMME //
        	WCHAR *cmd_stop = L"xampp_stop.exe";
        	WCHAR *cmd_start = L"xampp_start.exe";
        	WCHAR *cmd_iexplorer = L"start iexplore.exe \"localhost/presenter\"";
    
        	STARTUPINFO si;
        	PROCESS_INFORMATION pi;
    
        	STARTUPINFO si2;
        	PROCESS_INFORMATION pi2;
    
        	STARTUPINFO si3;
        	PROCESS_INFORMATION pi3;
    
    		printf("Trying to create process xampp_stop!");
        	if(!CreateProcess(NULL, cmd_stop, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)){
            	printf("Process xampp_stop could not be created!");
            	return 0;
        	}
    
        	WaitForSingleObject(pi.hProcess, INFINITE);
        	CloseHandle(pi.hProcess);
        	CloseHandle(pi.hThread);
    
    		printf("Trying to create process xamp_stop!");
        	if(!CreateProcess(NULL, cmd_start, NULL, NULL, FALSE, 0, NULL, NULL, &si2, &pi2)){
            	printf("Process xampp_start could not be created!");
    	        return 0;
        	}
    
        	WaitForSingleObject(pi2.hProcess, INFINITE);
        	CloseHandle(pi2.hProcess);
        	CloseHandle(pi2.hThread);
        	printf("Presenter Started!");
    
        	printf("Trying to create process ie!");
        	if(!CreateProcess(NULL, cmd_iexplorer, NULL, NULL, FALSE, 0, NULL, NULL, &si3, &pi3)){
            	printf("Process ie could not be created!");
    	        return 0;
        	}
    		WaitForSingleObject(pi3.hProcess, INFINITE);
    		CloseHandle(pi3.hProcess);
        	CloseHandle(pi3.hThread);
        	printf("Presenter Started!");
    
    	// Presenter sollte laufen, Fenster bitte schließen.
    	exit(0);       
        }
        //*)
        return wxsOK;
    
    }
    

    Ihr seht bestimmt was ich vor habe: Ich möchte einen XAMP starten und dann auf eine "lokale" PHP-Seite verlinken, auf der eine Application umgesetzt ist.

    Ich habe wie gesagt sehr wenig C++ / C-Erfahrung. (habe die gleiche Anwendung in Java geschrieben und es funktionierte, in C++ kenn ich mich aber nicht sonderlich aus und ich will nicht die Virtual Machine als Anforderung für die Anwendung haben).

    Nach einigem hin und her mit verschiedenen IDEs bin ich bei Code::Blocks angekommmen und hab nach wiederum einigem hin und her den Compiler MinGW / GCC+ zum Laufen bekommen, wxWidgets kompiliert und scheinbar auch alles in der IDE richtig eingestellt (lass ich die Process-Aufrufe, etc. weg funktioniert das "GUI" der Anwendung (einfach nur nen Splash-Screen-Bild nämlich).

    Könnte mir jemand einen Tipp geben was ich falsch mache und wie ich es beheben kann? Ich habe die benötigten DLLs und die kompilierte EXE ins gleiche Verzeichnis wie xamp_start.exe und xamp_stop.exe kopiert.

    Starte ich die kompilierte Exe gibts aber den Absturz.

    Viele Grüße und vielen, vielen Dank im Voraus!
    Fuchur

    PS: Was ich natürlich auch noch dazuschreiben könnte wäre die Fehlermeldung von Windows. Keine Ahnung ob das helfen kann aber lieber zuviele Infos als zu wenige:

    Problemsignatur: 
    AppName: presenter_wxwidgets.exe	 AppVer: 0.0.0.0	 ModName: kernel32.dll
    ModVer: 5.1.2600.5512	 Offset: 0002f284
    


  • Hallo Leute...

    nach doch einigen Views und keiner Antwort wollte ich mal nachfragen ob ich noch was zur Verfügung stellen kann / irgendwas tun kann um vielleicht jemandem zu helfen mir zu helfen? 🙂

    Weiß wirklich niemand Rat oder hab ich was beim Posten falsch gemacht oder so?
    Habe Hilfe wirklich nötig... ich hab nämlich nicht den Hauch einer Ahnung wo ich ansetzen soll um das Problem zu lösen...

    Viele Grüße
    *Fuchur*


  • Mod

    Keine Ahnung, aber hast du schon mal das ganze im Debugger laufen lassen?
    Lass dir mal dann den Stacktrace ausgeben. Der Debugger kann dir i.d.R. auch zeigen wo es crasht.



  • Nur für einen SplashScreen wxWidgets verwenden? Da kannst du eigentlich gleich bei java bleiben, das ist sowieso fast überall installiert, wxWidgets nicht.

    Da du dich auf Windflows festzulegen scheinst (Hartcodierte exe, CreateProcess, ...) kannst du doch auch gleich die WinApi für die Gui nehmen, nur nen SplashSceen anzeigen sollte da auch ratzfatz gehen.

    Ansonsten: http://docs.wxwidgets.org/stable/wx_wxprocess.html
    wenn es wxWidgets sein soll.



  • Hallo Leute,

    ich hab mir l'abra d'ors Vorschlag zu Herzen genommen und hab das Ganze jetzt mit der WinAPI umgesetzt...

    Weiteres dazu in einem anderen Thread, weil das hier ja glaube ich dann nicht mehr reinpasst (-> "Andere GUIs").

    Vielen Dank schonmal vorab an alle die geantwortet haben!!!
    Ich habs leider noch nicht hinbekommen, aber mehr dazu im neuen Thema: http://www.c-plusplus.net/forum/viewtopic-var-t-is-266781.html
    *Fuchur*


Anmelden zum Antworten