Konsolenanwendung



  • Hallo Freunde,

    ich benötige dringend eine Information zum Konsolenprogramm.
    Mein Programm, dass ich in VC++ 2005 EE als Konsolenanwendung geschrieben habe,
    berechnet eine eingegebene Zahl (von einem anderen Programm) auf korrkte Eingabe. Die Prüfung geht sehr schnell über die Bühne, aber es wird immer sehr kurz das Dos Fenster angezeigt.

    Wie kann man verhindern, dass das Dos Fenster überhaupt angezeigt wird?

    Gruß Daniel



  • mit SW_HIDE starten...



  • Im Linker umstellen auf "Windows-Anwendung"!



  • Hallo Jochen,

    Dein Vorschlag klingt sehr gut, aber wie wird der Linker von VC++ 2005 EE eingestellt?

    In den Eigenschaften meines Programms? Hier gibt es die Möglichkeit einstellungen durchzuführen, aber wo ist das verflixte Ding, ich habe hier alles abgesucht.

    P.S.: Auf diese Farge hatte mein Studienlehrer übrigends keine Antwort.

    Gruß und Danke für die schnellen Antworten,
    DanielK



  • Project->Property->Conf Props->Linker->System->SubSystem



  • Ok, ich habe das umgestellt, aber jetzt gibt es den folgenden Fehler:

    MSVCRT.lib(crtexew.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "_WinMain@16".
    1>C:\Dokumente und Einstellungen\kruse\Eigene Dateien\Visual Studio 2005\Projects\extcheck\Release\extcheck.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

    Diesen Wert habe ich umgestellt:SubSystem = Windows (/SUBSYSTEM:WINDOWS)

    Hmm, muss vielleicht noch etwas umgestellt werden, oder geht das nur mit Visual Studio?

    Gruß
    DanielK



  • Du musst Dein "main" (bzw. "_tmain") durch "WinMain" ersetzen...



  • Hallo Jochen,

    Du kennst Dich offensichtlich gut aus, ich leider nicht. Ich befinde mich noch in der "Lehre", deshalb kann ich Deine sehr speziellen Ausdrücke nicht immer richtig umsetzten, leider fehlt mir noch einiges an wissen!?

    Ich habe Deinen Vorschlag umgesetzt, habe dann aber den nächsten Fehler erhalten:

    ) : warning C4007: 'WinMain': '__stdcall' muss angegeben werden
    1>.\extcheck.cpp(57) : error C4439: "WinMain": Die Funktionsdefinition mit einem verwalteten Typ in der Signatur muss eine __clrcall-Aufrufkonvention aufweisen.

    So sieht meine main Zeile aus: int WinMain(array<System::String ^> ^args)

    Wie gehts weiter?

    Gruß und Danke für die Hilfe,
    DanielK



    • Öffne dein Projekt in Visual Studio
    • Gehe in das Menü Projekt und wähle "projekt-name"-Eigenschaften (Letzter eintrag im Menü)
    • Wähle dort unter Konfigurationseigenschaften => Linker => System den Wert "Windows (/SUBSYSTEM:WINDOWS)" für die Eigenschaft SubSystem
    • Setze "main" für Einstiegspunkt (bzw EntryPoint) in Konfigurationseigenschaften => Linker => Erweitert

    in deiner C++ datei sollte der Einstiegspunkt so aussehen:

    int main(array<System::String ^> ^args)
    {
    }
    

    Neu kompilieren fertig.

    (Getestet mit Visual Studio 2005)

    BR
    Vinzenz



  • Es funktioniert.

    Vielen Dank für Deine schnelle Antwort, evilissimo!

    🙂 🙂 🙂


Anmelden zum Antworten