看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
greentight:感謝你~ 11/11 14:39