[Need Help]Warten bis ein Fenster offen ist



  • dot schrieb:

    Ah, ich dachte es geht hier um den Umgang mit Visual Studio. Selber per Hand in der Konsole kompilieren ist natürlich auch eine potentiell sehr lehrreiche Erfahrung aber das meinte ich gar nicht, da hab ich oben wohl was falsch verstanden bzw. nicht genau genug gelesen.

    Achso ne ich glaub ich bin der der was missverstanden hatte. Ich habe gedacht ich soll mein Projekt aus der Konsole heraus erstellen ,dadurch würde der Fehler den ich mit Visual C++ habe behoben 🙂

    Finde es aber echt schade dass ich dieses Projekt nicht mit Visual C++ erstellen kann woran liegt ein solcher Fehler denn normalerweise?
    ( Der Fehler ist ,dass ohne Compiler Warnungen eine .exe Datei erstellt wird , wenn ich diese allerdings starte kommt nur die Fehlermeldung " Projektname.exe funktioniert nichtmehr " kann mir das einfach nicht erklären ,und finde es auch bisschen schwach von meinem Compiler ,dass er eine nicht funktionierende exe erstellt ,aber keinerlei warnungen ausgibt woran ich merken könnte wo das Problem liegt.



  • DerNoob1993 schrieb:

    Stimm ich dir schon zu ,aber ich habe keine Ahnung wie ich ein Projekt mit der Visual Studio Eingabeaufforderung erstelle:)

    Hab ich Dir doch oben erklärt. Wenn Du die VS Konsole erst mal offen hast, hast Du schon die halbe Miete!

    Im obigen Beispiel hast Du ja nur eine Quelldatei - nennen wir sie mal prog.cpp - mit dem oben von mir geposteten Inhalt. Die liegt ja in irgendeinem Verzeichnis auf Deiner Platte.

    In dieses Verzeichnis navigierst Du Dich mit der Konsole mittels cd (das kennst Du hoffentlich?).

    Wenn du angekommen bist, tippst Du ein:

    cl /EHsc prog.cpp user32.lib

    cl ist der Compileraufruf, /EHsc ist ein Schalter, den C++ Programme gerne haben wollen (cl übersetzt grundsätzlich auch C-Programme), prog.cpp ist Deine Quelldatei und user32.lib ist eine Windows-Library, die die WaitForIdleInput - Funktion beherbergt.

    cl übersetzt jetzt Deine Quelldatei und wenn Du es nicht explizit (durch Schalter /c) ausschließt, ruft es danach auch den Linker auf und linkt die entstandene Objektdatei prog.obj mit der user32.lib zu einer ausführbaren exe-Datei zusammen.

    Wenn kein Fehler auftritt, solltest Du jetzt in dem Verzeichnis die prog.obj als Zwischenergebnis und die prog.exe als Endprodukt haben.

    Letztere startest Du nun einfach durch Eingabe von prog

    So einfach ist das ...

    Dann kannst Du sicher sein, dass nicht irgendwelche Compiler/Linker-Optionen gesetzt sind, von denen Du nichts weißt.



  • Belli schrieb:

    DerNoob1993 schrieb:

    Stimm ich dir schon zu ,aber ich habe keine Ahnung wie ich ein Projekt mit der Visual Studio Eingabeaufforderung erstelle:)

    Hab ich Dir doch oben erklärt. Wenn Du die VS Konsole erst mal offen hast, hast Du schon die halbe Miete!

    Im obigen Beispiel hast Du ja nur eine Quelldatei - nennen wir sie mal prog.cpp - mit dem oben von mir geposteten Inhalt. Die liegt ja in irgendeinem Verzeichnis auf Deiner Platte.

    In dieses Verzeichnis navigierst Du Dich mit der Konsole mittels cd (das kennst Du hoffentlich?).

    Wenn du angekommen bist, tippst Du ein:

    cl /EHsc prog.cpp user32.lib

    cl ist der Compileraufruf, /EHsc ist ein Schalter, den C++ Programme gerne haben wollen (cl übersetzt grundsätzlich auch C-Programme), prog.cpp ist Deine Quelldatei und user32.lib ist eine Windows-Library, die die WaitForIdleInput - Funktion beherbergt.

    cl übersetzt jetzt Deine Quelldatei und wenn Du es nicht explizit (durch Schalter /c) ausschließt, ruft es danach auch den Linker auf und linkt die entstandene Objektdatei prog.obj mit der user32.lib zu einer ausführbaren exe-Datei zusammen.

    Wenn kein Fehler auftritt, solltest Du jetzt in dem Verzeichnis die prog.obj als Zwischenergebnis und die prog.exe als Endprodukt haben.

    Letztere startest Du nun einfach durch Eingabe von prog

    So einfach ist das ...

    Dann kannst Du sicher sein, dass nicht irgendwelche Compiler/Linker-Optionen gesetzt sind, von denen Du nichts weißt.

    Edit: JUHUUU es hat kompiliert ,und wird ausgeführt ich liebe dich 😃



  • Schön! Dann liegt es an irgendwelchen in Deiner IDE verborgenen Einstellungen ... aber die sind natürlich schwieriger auf die Ferne abzuklären.

    Ich benutze die eigentlich nur für wirklich große Projekte, wenn ich den Debugger benötige.

    Für alles andere gehe ich auch wie oben beschrieben vor.



  • DerNoob1993 schrieb:

    Finde es aber echt schade dass ich dieses Projekt nicht mit Visual C++ erstellen kann woran liegt ein solcher Fehler denn normalerweise?

    Zwischen Tastatur und Bildschirm... 😉

    DerNoob1993 schrieb:

    ( Der Fehler ist ,dass ohne Compiler Warnungen eine .exe Datei erstellt wird , wenn ich diese allerdings starte kommt nur die Fehlermeldung " Projektname.exe funktioniert nichtmehr " kann mir das einfach nicht erklären ,und finde es auch bisschen schwach von meinem Compiler ,dass er eine nicht funktionierende exe erstellt ,aber keinerlei warnungen ausgibt woran ich merken könnte wo das Problem liegt.

    Daran, dass dein Programm fehlerhaft ist, z.B. weil du einen ungültigen Zeiger dereferenzierst oder sonst was. Verwend den Debugger von Visual Studio um rauszufinden, was genau schiefläuft.



  • Unfassbar...



  • dot schrieb:

    DerNoob1993 schrieb:

    Finde es aber echt schade dass ich dieses Projekt nicht mit Visual C++ erstellen kann woran liegt ein solcher Fehler denn normalerweise?

    Zwischen Tastatur und Bildschirm... 😉

    DerNoob1993 schrieb:

    ( Der Fehler ist ,dass ohne Compiler Warnungen eine .exe Datei erstellt wird , wenn ich diese allerdings starte kommt nur die Fehlermeldung " Projektname.exe funktioniert nichtmehr " kann mir das einfach nicht erklären ,und finde es auch bisschen schwach von meinem Compiler ,dass er eine nicht funktionierende exe erstellt ,aber keinerlei warnungen ausgibt woran ich merken könnte wo das Problem liegt.

    Daran, dass dein Programm fehlerhaft ist, z.B. weil du einen ungültigen Zeiger dereferenzierst oder sonst was. Verwend den Debugger von Visual Studio um rauszufinden, was genau schiefläuft.

    Naja mein Programm ( der Quelltext) an sich war ja nicht Fehlerhaft es lag an irgendeiner Compiler einstellung , als ich es mit der Eingabeaufforderung erstellt habe hat ja auch alles einwandfrei geklappt und mein Programm läuft nun einwandfrei 🙂
    Ich weiß ihr denkt euch jetzt alle oh mann er will sowas Programmieren und hat kaum Ahnung von seinem Compiler / wusste nichtmal wie man ein Projekt aus der Konsole heraus erstellt, aber mein Buch womit ich lerne gibt halt wie gesagt zu einzelnen Compilern kaum- garkeine Infos ,weshalb ich mich damit einfach leider noch nicht gut auskenne ,aber letztendlich hat ja alles einwandfrei geklappt 😃



  • DerNoob1993 schrieb:

    Naja mein Programm ( der Quelltext) an sich war ja nicht Fehlerhaft es lag an irgendeiner Compiler einstellung , als ich es mit der Eingabeaufforderung erstellt habe hat ja auch alles einwandfrei geklappt und mein Programm läuft nun einwandfrei 🙂
    Ich weiß ihr denkt euch jetzt alle oh mann er will sowas Programmieren und hat kaum Ahnung von seinem Compiler / wusste nichtmal wie man ein Projekt aus der Konsole heraus erstellt, aber mein Buch womit ich lerne gibt halt wie gesagt zu einzelnen Compilern kaum- garkeine Infos ,weshalb ich mich damit einfach leider noch nicht gut auskenne ,aber letztendlich hat ja alles einwandfrei geklappt 😃

    vrmtl hat das den fehler nur verdeckt und nicht beseitigt...



  • unskilled schrieb:

    vrmtl hat das den fehler nur verdeckt und nicht beseitigt...

    Klar, deshalb habe ich auch nie Fehler in meinen Programmen, ich kompiliere und linke ja in der Regel in der Konsole. Das verdeckt effektiv alle Fehler.



  • Belli schrieb:

    unskilled schrieb:

    vrmtl hat das den fehler nur verdeckt und nicht beseitigt...

    Klar, deshalb habe ich auch nie Fehler in meinen Programmen, ich kompiliere und linke ja in der Regel in der Konsole. Das verdeckt effektiv alle Fehler.

    jo, wenn man programm im debug-modus nicht läuft, kompilier ichs im release-modus und freu mich, dass es ja doch geht. das mach ich natürlich in der konsole und sage dann: es lag an der gui...


Anmelden zum Antworten