QT的入口函數是main,VS下運行QT介面 會彈出一個黑黑的控制台視窗,怎麼去掉這控制台視窗呢?
我找到兩種辦法去掉Console視窗。
方法一、修改QT的project檔案
這種方法時候其他OS平台。我的project檔案為test.pro,去掉其中的
CONFIG += console release
也可以改成 CONFIG += release
然後使用命令:
C:\qt\qmake -makefile
C:\qt\nmake
重新編譯好之後再次運行,你會發現黑黑的Console視窗沒有了。
方法二、VS2008中修改項目參數
開啟test.sln之後,在項目的屬性頁面,“配置屬性”/“連結器”/“系統”中“子系統”選擇“Windows(/SUBSYSTEM:WINDOWS)原先為“控制台(/SUBSYSTEM:CONSOLE)”
如果只修改這一項,重新編譯的時候會報這樣的錯誤:
MSVCRTD.lib(crtexew.obj) : error LNK2019: 無法解析的外部符號 _WinMain@16,該符號在函數 ___tmainCRTStartup 中被引用
需要在“進階”選項中添加“進入點”:mainCRTStartup
再次編譯就OK了。
有關VS環境下如何去掉CONSOLE,參考:
作系統裝載應用程式後,做完初始化工作就轉到程式的進入點執行。程式的預設進入點實際上是由串連程式設定的,不同的連接器選擇的入口函數也不盡相同。
在VC下,連接器對控制台程式設定的入口函數是 mainCRTStartup,mainCRTStartup 再調用你自己編寫的 main 函數;
對圖形化使用者介面(GUI)程式設定的入口函數是 WinMainCRTStartup,WinMainCRTStartup 調用你自己寫的 WinMain 函數。
具體設定哪個進入點是由連接器的“/subsystem:”選項參數確定的,它告訴作業系統如何運行編譯產生的.EXE檔案。
可以指定四種方式:“CONSOLE|WINDOWS|NATIVE|POSIX”如果這個選項參數的值為“WINDOWS”,則表示該應用程式運行時不需要控制台,有關連接器參數選項的詳細說明請參考 MSDN 庫。
下面我們將通過先行編譯指令來對編譯器和連接器進行設定,從而達到我們的目的:例子代碼運行後播放Windows系統啟動聲音三次,然後退出,運行後不會顯示控制台視窗。
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib") // 告訴連接器與這個庫串連,因為我們要播放多媒體聲音
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 設定連接器選項
int main(void)
{
PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC);
Sleep(50);
PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC);
Sleep(50);
PlaySound("SystemStart",NULL, SND_ALIAS|SND_SYNC);
Sleep(50);
return 0;
}