Eigener Windows-Bildschirmschoner öffnet immer Konsolenfenster



  • Hallo,

    ich habe mir einen kleinen Bildschirmschoner geschrieben (entsprechend der Anleitung hier im Forum und weiterer im Internet) und habe jetzt das Problem, daß der kompilierte Bildschirmschoner immer zuerst ein Konsolenfenster öffnet bevor er startet und ich weiß nicht warum.

    Ich verwende die Wascana-IDE (Eclipse + CDT + GCC) und habe leider erst sehr wenig Erfahrung mit C bzw. C++ und vermute da irgendeinen fehlerhaften Kompilerschalter. In den Projekt-Einstellungen habe ich da aber leider nix gefunden, was darauf hindeutet, das das als DOS-Anwendung kompiliert wird.

    Wäre für jede Hilfe dankbar, auch welche Infos ggf. noch helfen könnten..

    Vielen Dank



  • Du musst in den Linker-Settings von "Subsytem:Console", nach "Subsystem:Windows" umstellen...
    Und dann auch noch "main" nach "WinMain".



  • Hmm, vielen Dank schon mal,

    in den Projekt-Optionen vom CDT für die Linker-Einstellungen finde ich aber leider nix, wo ich das Subsystem umstellen kann.
    Und eine main() habe ich ja auch nicht, das wird ja alles von der scrnsave.lib gekapselt (und da vermute ich doch stark eine WinMain drin 😉 ) (Hab halt nur die ScreenSaverProc(), RegisterDialogClasses() und ScreenSaverConfigureDialog() und halt meine eigenene Funktionen OnTimer() usw. ...).

    Aber mit den Hinweisen habe ich im Internet für den g++ den Compilerschalter

    -mwindows
    

    gefunden und manuell eingetragen (allerdings beim g++-Compiler, als Option für den Linker gibt das einen Fehler "unsupported emulation mode"...). Aber im Internet steht ja auch, dass man den Schalter für den Compiler benutzen muss, nicht für den Linker.

    Dummerweise hat das auch keine Auswirkungen, das Konsolen-Fenster erscheint weiterhin 😞

    Wo genau finde ich denn die Linker-Einstellungen dazu in den Projekt-Optionen? Hab ich wie gesagt leider nicht gefunden...



  • Also ich habe da jetzt noch weiter im Internet nach gesucht und mittlerweile mehrere Varianten herausgefunden, allerdings klappt keine davon. Entweder gibts eine Fehlermeldung oder aber das Konsolenfenster bleibt trotzdem...

    Ich weiß echt nicht mehr weiter und wäre sehr froh, wenn mir jemand da helfen könnte...

    Folgende Varianten habe ich mittlerweile durchprobiert:
    Linker-Einstellungen (Xlinker Parameter):

    "--subsytem windows" oder "--subsytem:windows" oder "--subsytem Windows"
    "--entry _WinMain@16"

    Ich erhalte beim Linken die Fehlermeldung:

    ld.exe: unrecognized option '--subsystem windows'
    

    Compiler Einstelling g++: (bei "Miscelleanous")

    -Wl,"--subsystem Windows","--entry _WinMain@16"
    -mwindows
    -Wl,-mwindows

    Da erhalte ich weiter das Konsolenfenster.
    Zusätzlich erhalte ich bei der ersten Variante (vom Compiler pro object-file, nicht beim Linken):

    g++: --subsystem Windows: linker input file unused because linking not done
    g++: --entry _WinMain@16: linker input file unused because linking not done
    

    Bei der dritten Variante (vom Compiler pro object-file, nicht beim Linken):

    g++: -mwindows: linker input file unused because linking not done
    

    Die zweite Variante hat nur zur Folge, dass ich den Parameter im Compiler-Aufruf sehe, irgendwelche Ausgabe des g++ konnte ich dazu nicht finden...

    Kann mir da bitte jemand weiterhelfen, komme alleine jetzt wirklich nicht mehr weiter (außer dass ich durch wildes rumprobieren vielleicht zufällig mal irgendwas richtig einstelle, aber ich würd schon gern wissen warum das dann so ist...)



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum WinAPI in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • So, habs jetzt hinbekommen nach weiterem Probieren...

    Falls jemand anderes mal das Problem hat:
    Im CDT bei den Linker-Optionen ("Linker flags") muss man "-mwindows" eintragen, wenn als Linker der g++ eingestellt ist...


Log in to reply