推 greentight:感謝你~ 11/11 14:39
※ 引述《greentight (胸部拉傷)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Windows 7 sp1
: Visual Studio 2010
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: Qt 5.1.1
: 問題(Question):
: 下載
: qt-vs-addin-1.2.2-opensource
: qt-windows-opensource-5.1.1-msvc2010_opengl-x86-offline
: 安裝後,用VS新增 Qt5 project 後可以順利執行
: Qt Creator也可以用
: 於是我想用VS 新增C++專案,想不透過 Qt Creator 來呼叫出視窗程式
: 打了一小段非常簡單的程式碼
: #include <QtWidgets\qapplication.h>
: int main(int argc, char* argv[])
: {
: QApplication app(argc, argv);
: return app.exec();
: }
: 錯誤訊息:
: 三項都是 error LNK 2019 (...部分皆相同,故省略)
: ... virtual __thiscall QApplication::~QApplication(void)"
: (__imp_??1QApplication@@UAE@XZ) 在函式 _main 中被參考
: ... static int __cdecl QApplication::exec(void)"
: (__imp_?exec@QApplication@@SAHXZ) 在函式 _main 中被參考
: ... __thiscall QApplication::QApplication(int &,char * *,int)"
: (__imp_??0QApplication@@QAE@AAHPAPADH@Z) 在函式 _main 中被參考
: 補充說明(Supplement):
: 已嘗試過:
: a. 專案屬性 -> C/C++ -> 一般 -> 其他Include目錄 (增加qt inlcude目錄)
: b. 專案屬性 -> 連結器 -> 一般 -> 其他程式庫目錄 (增加qt lib目錄)
: c. 專案屬性 -> 連結器 -> 輸入 -> 其他其他相依性 (Qt5Cored.lib, Qt5Gui.lib)
: d. 確認 子系統 設定正確(/SUBSYSTEM:COMNSOLE)
: 請問一下這到底是怎樣的問題?
我懶得開 Visual Studio (開了我也不會用, 說真的)
我用以下的指令可以編譯
cl /I %QT%\include main.cpp /link /LIBPATH:%QT%\lib Qt5Widgets.lib
這裡我假設你的檔名是 main.cpp
然後環境變數 QT 指向 Qt 的安裝目錄 (也就是有 include 和 lib 的那個)
其實重點就是 Qt5Widgets.lib
不曉得為什麼你沒辦法從推文反應過來我說的是函式庫名稱 :~
Qt 5 把 GUI 相關的東西拆成 Qt5Gui 和 Qt5Widgets 兩個部分
而 QApplication 屬於 Qt5Widgets (我想這從 header path 可以看得出來)
所以你要去對應的函式庫找
在這個例子中你只用到了 QApplication
但在實際的狀況下你應該還是會用到其他的 Qt classes
所以通常最低限度都要 link Qt5Core, Qt5Gui 與 Qt5Widgets
如果用了 signal-slot mechanism 還要用 MOC 處理
這種實驗可以讓你了解 Qt 到底背後幫你搞了什麼東西, 其實還頗有益處
不過真的在工作產出的時候還是如推文請愛用 IDE 與 qmake XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.161.94.175