從 0 到跑通的 Qt + OpenGL + VS 項目的完整流程

🧩 全流程目標:

在 Visual Studio 中成功打開、編譯并運行一個 Qt + OpenGL 項目(.vcxproj 格式)


? 第 1 步:安裝必要環境

工具說明
Visual Studio 2017 / 2019 / 2022必須勾選 “使用 C++ 的桌面開發” 和 “MSVC 工具集”
Qt(對應 MSVC 版本)如 Qt 5.12.0 + MSVC2017_64
CMake(如果項目基于 CMake)可選,很多 .vcxproj 項目不需要
GLEW / GLFW / OpenGL可通過 vcpkg 或手動集成

? 推薦你安裝:Qt 5.12.0 MSVC2017_64
Qt 安裝路徑一般為:E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\


? 第 2 步:準備你的 .vcxproj 項目

你應該已經有這些文件之一:

  • SpongeBob.vcxproj

  • .h, .cpp, .ui

  • 項目文件夾結構:

SpongeBob\
├── SpongeBob.vcxproj
├── myglwidget.cpp / .h
├── main.cpp
├── *.ui
├── shaders / images / textures(資源)

? 第 3 步:在 VS 中配置 Qt + OpenGL 環境

🔧 配置 Qt 的包含路徑和庫路徑

? 包含目錄(C++頭文件)
E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\include
E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\include\QtWidgets
E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\include\QtGui
E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\include\QtCore
E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\include\QtOpenGL
? 庫目錄(.lib文件)
E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\lib

? 第 4 步:設置鏈接器依賴項

🧱 Debug 模式下添加這些 .lib

Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib
Qt5OpenGLd.lib
opengl32.lib
glu32.lib
glew32s.lib   (或 glew32.lib)
glfw3_mt.lib  (或 glfw3dll.lib)

🧱 平臺插件需要:

確保你的運行目錄有:

platforms/qwindowsd.dll

? 第 5 步:設置運行目錄

在 VS 中設置:

配置屬性 → 調試 → 工作目錄

設置為:

$(OutDir)

或你的資源路徑目錄。


? 第 6 步:添加 Qt 的 MOC 和 UIC 支持(如果使用 .ui 或 Q_OBJECT)

如果你用了 Qt 的信號槽、Q_OBJECT.ui 文件,需要讓 VS 支持 Qt 的編譯工具:

方法一:使用 Qt VS Tools 插件(官方)

安裝后右鍵項目 → Qt Project Settings:

  • 配置 Qt 安裝路徑

  • 它會自動生成 MOC/UIC/資源文件


? 第 7 步:編譯運行!

Debug 模式下運行:

  • 會生成 SpongeBob.exex64\Debug\

  • 確保該目錄下有 Qt 所需 DLL 和平臺插件


? 第 8 步:部署運行環境(拷貝 DLL)

可使用 windeployqt 自動打包運行依賴:

E:\Qt\Qt5.12.0\5.12.0\msvc2017_64\bin\windeployqt.exe E:\SpongeBob\x64\Debug\SpongeBob.exe

? 參考文件結構(運行時):

x64\Debug\
├── SpongeBob.exe
├── Qt5Cored.dll
├── Qt5Guid.dll
├── Qt5Widgetsd.dll
├── Qt5OpenGLd.dll
├── glew32.dll(如果用動態庫)
├── glfw3.dll(如果用動態庫)
└── platforms\└── qwindowsd.dll

🎁 Bonus:自動部署 .bat 文件(可選)

@echo off
set QT_DIR=E:\Qt\Qt5.12.0\5.12.0\msvc2017_64REM 配置 VS 環境
call "D:\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"REM 運行 windeployqt
%QT_DIR%\bin\windeployqt.exe E:\SpongeBob\x64\Debug\SpongeBob.exepause

🧠 小結:跑通 .vcxproj 的關鍵點

項目要點
編譯包含目錄 + 鏈接 .lib
運行拷貝 Qt DLL + GLEW/GLFW
GUIplatforms/qwindows[d].dll 必須有
調試啟用符號(.pdb),避免混用 Debug/Release
信號槽使用 Qt VS Tools 或手動 MOC

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899699.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899699.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899699.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙開發03樣式相關介紹(二)

文章目錄 一、樣式復用1.1 Styles修飾符1.2 Extend修飾符 二、多態樣式 一、樣式復用 在頁面開發過程中,會出出現大量重復的樣式設置代碼,可以使用Styles和Extend修飾符將幫助我們進行樣式復用。 1.1 Styles修飾符 Styles裝飾器可以將多條樣式設置提煉…

裝飾器模式與模板方法模式實現MyBatis-Plus QueryWrapper 擴展

pom <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 聯表查詢 --> </dependency>MPJLambdaWrapperX /*** 拓展 MyBatis Plus Join QueryWrapper 類&…

05-031-自考數據結構(20331)- 哈希表 - 例題分析

哈希表考題主要涵蓋四大類型:1)函數設計類(如除留余數法計算地址,需掌握質數p的選擇技巧);2)沖突處理類(線性探測法要解決堆積現象,鏈地址法需繪制鏈表結構);3)性能分析類(重點計算ASL,理解裝填因子α的影響規律);4)綜合應用類(如設計ISBN查詢系統,需結合實際問…

rustdesk 自建服務器 key不匹配

請確保id_ed25519文件的權限為&#xff1a; -rw------- 1 root root 88 Apr 31 10:02 id_ed25519在rustdesk安裝目錄執行命令&#xff1a; chmod 700 id_ed25519

Dify 深度集成 MCP實現災害應急響應

一、架構設計 1.1 分層架構 #mermaid-svg-5dVNjmixTX17cCfg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5dVNjmixTX17cCfg .error-icon{fill:#552222;}#mermaid-svg-5dVNjmixTX17cCfg .error-text{fill:#552222…

AI與.NET技術實操系列(三):在 .NET 中使用大語言模型(LLMs)

1. 引言 在技術迅猛發展的今天&#xff0c;大語言模型&#xff08;Large Language Models, LLMs&#xff09;已成為人工智能領域的核心驅動力之一。從智能對話系統到自動化內容生成&#xff0c;LLMs的應用正在深刻改變我們的工作與生活方式。對于.NET開發者而言&#xff0c;掌…

一個極簡的詞法分析器實現

文章目錄 推薦&#xff1a;Tiny Lexer - 一個極簡的C語言詞法分析器特點核心代碼實現學習價值擴展建議 用Java實現一個簡單的詞法分析器完整實現代碼代碼解析示例輸出擴展建議 用Go實現極簡詞法分析器完整實現代碼代碼解析示例輸出擴展建議 最近兩天搞一個DSL&#xff0c;不得不…

強制用戶裸奔,微軟封鎖唯一后門操作

周末剛結束&#xff0c;那個常年將「用戶為中心」掛嘴邊的微軟又雙叒叕開始作妖&#xff01; 不錯&#xff0c;大伙兒今后可能再沒法通過「OOBE\BYPASSNRO」命令繞過微軟強制聯網要求了。 熟悉 Windows 11 操作系統的都知道&#xff0c;除硬件上諸多限制外&#xff1b; 軟件層…

大模型備案:攔截關鍵詞列表與敏感詞庫深度解析

隨著《生成式人工智能服務管理暫行辦法》正式實施&#xff0c;大模型上線備案成為企業合規運營的核心環節。其中&#xff0c;敏感詞庫建設與攔截關鍵詞列表管理直接關系內容安全紅線&#xff0c;今天我們就來詳細解析一下大模型備案的這一部分&#xff0c;希望對想要做備案的朋…

快速上手Linux系統輸入輸出

一、管理系統中的輸入輸出 1.什么是重定向&#xff1f; 將原本要輸出到屏幕上的內容&#xff0c;重新輸入到其他設備中或文件中 重定向類型包括 輸入重定向輸出重定向 2.輸入重定向 指定設備&#xff08;通常是文件或命令的執行結果&#xff09;來代替鍵盤作為新的輸入設…

文小言全新升級!多模型協作與智能語音功能帶來更流暢的AI體驗

文小言全新升級&#xff01;多模型協作與智能語音功能帶來更流暢的AI體驗 在3月31日的百度AI DAY上&#xff0c;文小言正式宣布了一系列令人興奮的品牌煥新與功能升級。此次更新不僅帶來了全新的品牌視覺形象&#xff0c;更讓文小言在智能助手的技術和用戶體驗方面邁上了一個新…

C++基礎算法(插入排序)

1.插入排序 插入排序&#xff08;Insertion Sort&#xff09;介紹&#xff1a; 插入排序是一種簡單直觀的排序算法&#xff0c;它的工作原理類似于我們整理撲克牌的方式。 1.基本思想 插入排序的基本思想是&#xff1a; 1.將數組分為已排序和未排序兩部分 2.每次從未排序部分…

k近鄰算法K-Nearest Neighbors(KNN)

算法核心 KNN算法的核心思想是“近朱者赤&#xff0c;近墨者黑”。對于一個待分類或預測的樣本點&#xff0c;它會查找訓練集中與其距離最近的K個樣本點&#xff08;即“最近鄰”&#xff09;。然后根據這K個最近鄰的標簽信息來對當前樣本進行分類或回歸。 在分類任務中&#…

【Feign】??使用 openFeign 時傳遞 MultipartFile 類型的參數參考

&#x1f4a5;&#x1f4a5;????歡迎閱讀本文章????&#x1f4a5;&#x1f4a5; &#x1f3c6;本篇文章閱讀大約耗時三分鐘。 ??motto&#xff1a;不積跬步、無以千里 &#x1f4cb;&#x1f4cb;&#x1f4cb;本文目錄如下&#xff1a;&#x1f381;&#x1f381;&a…

zk基礎—1.一致性原理和算法二

大綱 1.分布式系統特點 2.分布式系統的理論 3.兩階段提交Two-Phase Commit(2PC) 4.三階段提交Three-Phase Commit(3PC) 5.Paxos島的故事來對應ZooKeeper 6.Paxos算法推導過程 7.Paxos協議的核心思想 8.ZAB算法簡述 6.Paxos算法推導過程 (1)Paxos的概念 (2)問題描述 …

216. 組合總和 III 回溯

目錄 問題描述 解決思路 關鍵點 代碼實現 代碼解析 1. 初始化結果和路徑 2. 深度優先搜索&#xff08;DFS&#xff09; 3. 遍歷候選數字 4. 遞歸與回溯 示例分析 復雜度與優化 回溯算法三部曲 1. 路徑選擇&#xff1a;記錄當前路徑 2. 遞歸探索&#xff1a;進入下…

從AI大模型到MCP中臺:構建下一代智能服務的核心架構

從AI大模型到MCP中臺&#xff1a;構建下一代智能服務的核心架構 引言&#xff1a;AI大模型帶來的服務重構革命 在ChatGPT掀起全球AI熱潮的今天&#xff0c;大模型展現出的驚人能力正在重塑整個軟件服務架構。但鮮為人知的是&#xff0c;真正決定AI服務成敗的不僅是模型本身&a…

美團小程序 mtgsig1.2 拼好飯案例 分析 mtgsig

聲明 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 逆向分析 美團網頁、小程序、app全是指…

【大模型基礎_毛玉仁】5.5 模型編輯應用

目錄 5.5 模型編輯應用5.5.1 精準模型更新5.5.2 保護被遺忘權5.5.3 提升模型安全 5.5 模型編輯應用 大語言模型面臨更新成本高、隱私保護難、安全風險大等問題。模型編輯技術&#xff1a; 通過細粒度修改預訓練模型&#xff0c;避免從頭訓練&#xff0c;降低更新成本&#xff…

揭秘:父子組件之間的傳遞

基礎知識 組件與組件之間有三大方面的知識點&#xff1a; 子組件通過props defineProps&#xff08;{}&#xff09;接收父組件傳遞到參數和方法&#xff1b;子組件可以通過定義 emit 事件&#xff0c;向父組件發送事件&#xff1b;父組件調用子組件通過defineExpose 導出的方法…