2013-12-10 82 views
1

我在Windows上使用Qt5.2(git)和MSVC13。如果我構建任何應用程序(即使是模板),它總是在cmd.exe窗口中打開。我嘗試了不同的Qt版本和不同的編譯器(甚至MinGW),但我總是遇到同樣的問題。 但是,如果我使用QtDesigner中的綠色播放按鈕啓動應用程序,它將在沒有cmd窗口的情況下打開。 如建議here我試着「CONFIG - = console」沒有效果。另外我不使用testlib。 在我的qmake.conf中,我看到了一行「QMAKE_LFLAGS_WINDOWS =/SUBSYSTEM:WINDOWS」Qt5用gui應用程序打開控制檯

這是否依賴於我放在應用程序目錄中的dll文件? QtDesigner不會將任何dll複製到build文件夾,但它會設置一些環境變量。要從單獨的文件夾運行應用程序,我將相應的dll從Qt lib文件夾複製到applications exe文件夾中。

這種奇怪行爲的任何想法?

+0

你碰巧用過qdebug嗎? – friendzis

+0

不,我不這麼認爲,它也發生在模板項目和使用發佈DLL的 – DayAndNight

+0

嘗試使用依賴沃克 - 你可能有「全球」DLL的地方。我沒有MSVC13,所以我無法調查。你使用Express版還是全功能版? – friendzis

回答

1

好吧,這花了一段時間,但我終於找到了解決辦法在這裏: Hide console of Windows Application

我不得不更換主入口函數:

替換下面的代碼:

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    // your code* 
} 

by

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char*, int nShowCmd) 
{ 
    int argc = 0; 
    QApplication app(argc, 0); 
} 

謝謝大家!

0

是否勾選了複選框run in terminal

enter image description here

+0

不,在終端中運行沒有被選中。不過,我正在經歷完全相反的效果。如果我從QTDesigner啓動我的程序,它不會打開控制檯。但是,如果我從Windows資源管理器作爲獨立程序啓動它,它將啓動控制檯。 – DayAndNight

+0

@DayAndNight你看過[這個](http://stackoverflow.com/questions/760323/why-does-my-qt4-5-app-open-a-console-window-under-windows?lq=1 )? –

+0

是的,謝謝,我厭倦了我原來的帖子中提出的建議,但不幸的是問題仍然存在。 – DayAndNight

2

在MSVC 2013去你的項目屬性/連接器與變革:

/SUBSYSTEM:CONSOLE 

要:

/SUBSYSTEM:WINDOWS 

它爲我工作。

TODO

+0

我試圖設置「QMAKE_LFLAGS_WINDOWS =/SUBSYSTEM:WINDOWS」標誌作爲QtDesigner的附加make標誌,但它沒有區別 – DayAndNight

+0

你使用MSVC還是QtCreator?你在問題中說MSVC。 – Kikohs

+0

我使用MSVC13編譯器和QtCreator作爲IDE。但是現在問題在於不同的編譯器。可能是我使用Qt的SVN版本的問題?在我的舊版本中,使用MSVC12預編譯版本的Qt時沒有出現這個問題。 – DayAndNight

相關問題