QT去掉CONSOLE

來源:互聯網
上載者:User

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; 
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.