Ich habe eine Qt-Anwendung, und wenn ich diese Anwendung starte, gibt es eine Konsolenöffnung dahinter. In der Entwicklung ist es Nizza, weil ich Debug-Ausgaben auf der Konsole sehe, aber wenn ich diese ausführbare Datei an den Kunden weitergeben möchte, sollte es kein Konsolenfenster geben.
(Ich verwende Visual Studio 2008)
Es scheint, dass Ihre Linker-Konfiguration falsch ist. Klicken Sie mit der rechten Maustaste auf die Einstellungen für Projekt, Eigenschaften, Linker, System und Subsystem. Stellen Sie sicher, dass "Windows" ausgewählt ist, nicht "Konsole".
Ändern Sie main () in WinMain ().
In den Linkerstellungsoptionen für das Projekt erstellen
/SUBSYSTEM:windows
/ENTRY:mainCRTStartup
Oder verwenden Sie das folgende #pragma in der Quelldatei mit der int main(...)
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
Sie können die Konsole loswerden, indem Sie Folgendes anrufen:
FreeConsole();
ich benutze diese Methode und es hat funktioniert
HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
Nächste Lösung;)
Env: WixXP x64, msvs 2008, Qt v4.5.3
Projekteinstellungen/Konfigurationseigenschaften/Linker/System/SubSystem = Windows festlegen (/ SUBSYSTEM: WINDOWS)
Für x64 gibt es jedoch einen Linker-Fehler: LNK2019: nicht aufgelöstes externes Symbol _WinMain, auf das in Funktion _WinMainCRTStartup verwiesen wird
Ersetzen Sie den folgenden Code:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// your code*
}
durch
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char*, int nShowCmd)
{
int argc = 0;
QApplication app( argc, 0 );
}
Es funktioniert gut sowohl für Win32- als auch für x64-Plattformen.
Wenn Sie Eigenschaften -> Linker -> System -> SubSystem | verwenden Windows
Und bekomme einen Linker-Fehler.
Sie können sich Linker -> Advanced -> Entry Point anschauen.
und setzen Sie den Wert auf den Namen Ihrer "Hauptfunktion".
Das ist Ihr Einstiegspunkt, wenn Ihre Hauptfunktion ein "Haupt" ist.
Vielleicht ist es die bessere Option, nicht einfach zu entfernen (wie von Andy M vorgeschlagen), sondern die * .pro-Datei zu bearbeiten, die etwas hinzufügt
CONFIG(debug, debug|release) {
CONFIG *= console
}
else {
CONFIG -= console
}
Im Debug können Sie das Konsolenfenster sehen, aber nicht in der Version. Ich mag das. =)
Ich würde vorschlagen, die folgende Zeile in Ihrer .PRO-Datei zu überprüfen:
CONFIG += console
Wenn Sie es finden können, entfernen Sie es! Es sollte dein Problem beheben!
Ich hoffe es hilft !
Gehen Sie zu: Projects --> Run
und deaktivieren Sie das Kontrollkästchen Run in terminal
Für diejenigen, die das .vcxproj direkt bearbeiten, möchten Sie Ihrer SubSystem
Windows
eine Link
mit dem Wert ItemDefinitionGroup
hinzufügen:
<ItemDefinitionGroup>
<Link>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>