Visual studio + Qt 項目配置管理

Visual studio + Qt 項目配置管理

1.本機順利安裝 vs 和 Qt 軟件

? 并且設置好Qt 的環境變量比如

E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\bin
E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\lib
E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\include
//這里是你電腦上Qt的路徑,每臺電腦不一樣

2.vs 要安裝擴展

安裝完之后,關閉vs 電腦會自動安裝插件。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

3.創建一個Qt項目測試一下

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

Qt項目就配置成功了。

3.調試動態庫

? 創建了一個 動態庫項目,但是visual studio中我無法直接調試動態庫項目,可以新建一個 測試 EXE 項目 來調用 databaseSDKLib.dll,然后在 databaseSDKLib 里設置斷點進行調試。

1. 創建測試項目
  1. 在 Visual Studio 里創建一個新的控制臺項目 (Console App)
    • 文件 (File) → 新建 (New) → 項目 (Project)
    • 選擇 C++ 控制臺應用 (Console App)
    • 命名為 TestApp
  2. 讓 EXE 依賴創建的的 DLL:
    • 右鍵 TestApp,選擇 添加 (Add) → 現有項 (Existing Item)
    • 添加 databaseSDKLib.h(DLL 的頭文件)
    • TestApp源文件 (Source Files) 里添加 main.cpp 并調用你的 DLL:

? 3.配置 TestApp 依賴 databaseSDKLib

  • 右鍵 TestApp,選擇 屬性 (Properties)

  • “VC++ 目錄” → “包含目錄 (Include Directories)” 里添加 databaseSDKLib 的頭文件路徑

  • “VC++ 目錄” → “庫目錄 (Library Directories)” 里添加 databaseSDKLib.lib 的路徑

  • 在 “鏈接器 (Linker) → 輸入 (Input)”里,在附加依賴項 (Additional Dependencies)

    添加:

    databaseSDKLib.lib
    

? 4.設置 databaseSDKLib.dll 的運行路徑

  • 右鍵 TestApp,選擇 “屬性 (Properties)”

  • 在 “調試 (Debugging)” → “環境 (Environment)” 添加:

    PATH=D:\your_dll_folder;%PATH%
    

    這樣,運行時就能找到

    databaseSDKLib.dll
    

? 5.運行 TestApp 并調試

  • 設置 databaseSDKLib 斷點
  • 右鍵 TestApp,點擊 “設為啟動項目 (Set as Startup Project)”
  • F5 運行調試,如果 TestApp 調用了 DLL,VS 就會跳轉到 databaseSDKLib 的代碼里。

? 添加引用

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

? ? 如果 動態庫依賴其他第三方庫, TestApp 也需要添加這些庫的依賴

? ? 需要在 TestApp 中配置頭文件目錄、庫文件目錄和 DLL 的路徑

? ? 確保在調試時,所有依賴都被正確加載

4.releas模式下也可以進行斷點調試。

5.Visual Studio 配置 C++ 項目,需要設置多個關鍵參數

? 1. C/C++ 預處理和編譯相關配置

(1)附加包含目錄 (Include Directories)

  • 路徑設置項目屬性 → C/C++ → 常規 → 附加包含目錄

  • 作用:告訴編譯器在哪里尋找頭文件 (.h / .hpp)。

  • 示例:

    D:\Boost\include
    
  • 用途:

    • 當你的項目依賴于外部庫(如 Qt、Boost)時,需要指定這些庫的頭文件路徑。
    • 例如,代碼 #include <QtCore/QObject>,編譯器會去 D:\Qt\5.15.2\msvc2019_64\include 目錄下尋找 QObject 頭文件。

2. 鏈接器(Linker)相關配置

(2)庫目錄 (Library Directories)

  • 路徑設置項目屬性 → 鏈接器 → 常規 → 附加庫目錄

  • 作用:告訴鏈接器 (link.exe) 在哪里尋找 .lib 靜態庫或動態庫的導入庫。

  • 示例:

    plaintext復制編輯D:\Qt\5.15.2\msvc2019_64\lib
    D:\Boost\lib
    
  • 用途:編譯 .cpp 文件時只需要頭文件,但鏈接時需要 .lib 文件,所以必須指定庫所在路徑。

(3)附加依賴項 (Additional Dependencies)

  • 路徑設置項目屬性 → 鏈接器 → 輸入 → 附加依賴項

  • 作用:指定需要鏈接的 .lib 文件(編譯時鏈接)。

  • 示例

    plaintext復制編輯Qt5Core.lib
    Qt5Widgets.lib
    Boost_system.lib
    
  • 用途:

    • 當你使用 databaseSDKLib 這樣的庫時,最終的應用程序需要鏈接 databaseSDKLib.lib,否則無法解析庫中的函數。

3. 運行時配置

(5)環境變量 (Environment)

  • 路徑設置項目屬性 → 調試 → 環境

  • 作用:運行時加載 .dll 文件(動態庫)。

  • 示例:

    PATH=D:\Qt\5.15.2\msvc2019_64\bin;%PATH%
    
  • 用途:

    • 如果 TestApp.exe 運行時找不到 Qt5Core.dll,就需要將 Qt 運行庫的 bin 目錄添加到 PATH 變量。

4. 代碼生成和優化

  • 路徑設置項目屬性 → C/C++ → 代碼生成 → 運行時庫

  • 選項

    選項說明
    /MD使用多線程動態庫(msvcrt.dll),適用于動態鏈接
    /MT使用多線程靜態庫(libcmt.lib),適用于靜態鏈接
    /MDd/MD 的調試版本
    /MTd/MT 的調試版本
  • 用途

    • 如果你用 /MD 編譯 databaseSDKLib,那么 TestApp 也必須用 /MD,否則可能會有符號沖突。

5. 預處理器宏

(7)預處理器定義 (Preprocessor Definitions)

  • 路徑設置項目屬性 → C/C++ → 預處理器 → 預處理器定義

  • 作用:定義宏,用于控制編譯行為。

  • 示例

    _CRT_SECURE_NO_WARNINGS; WIN32; QT_CORE_LIB
    
  • 用途

    • _CRT_SECURE_NO_WARNINGS 讓 MSVC 忽略 scanf() 之類的安全警告。
    • WIN32 表示 Windows 平臺,QT_CORE_LIB 表示 Qt Core 模塊。

6. 編譯器優化

(8)優化選項 (Optimization)

  • 路徑設置項目屬性 → C/C++ → 優化

  • 選項

    選項說明
    /O1最小化代碼大小
    /O2最大化運行速度
    /Od禁用優化(適用于調試)
    /Oy省略幀指針(僅適用于 Release)

7. 其他重要配置

(9)輸出目錄 (Output Directory)

  • 路徑設置項目屬性 → 常規 → 輸出目錄

  • 作用:指定編譯生成的 .exe.dll 放在哪里。

  • 示例

    $(SolutionDir)bin\$(Configuration)\
    
  • 用途讓 Debug 和 Release 版本分開放,避免混淆。

(10)中間目錄 (Intermediate Directory)

  • 路徑設置項目屬性 → 常規 → 中間目錄

  • 作用:存放編譯過程中產生的 .obj 文件。

  • 示例

    $(SolutionDir)build\$(Configuration)\
    
  • 用途避免不同配置的 .obj 文件相互覆蓋。

配置項作用
附加包含目錄指定頭文件搜索路徑
庫目錄指定 .lib 文件搜索路徑
附加依賴項指定需要鏈接的 .lib 文件
運行時庫選擇 /MD(動態庫)或 /MT(靜態庫)
環境變量讓程序能找到 .dll
預處理器定義控制編譯行為,如 _CRT_SECURE_NO_WARNINGS
輸出目錄指定 .exe.dll 存放路徑
中間目錄指定 .obj 臨時文件存放路徑

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

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

相關文章

通過 Python 爬蟲提高股票選股勝率

此貼為Python爬蟲技術學習貼 在股票中&#xff0c;即便有了選股規則&#xff0c;從5000多只股票中篩選出符合規則的股票也是十分困難的&#xff0c;于是想通過爬蟲來實現自動化的快速選股。全文用GP代替股票 實現方案 1、指定兩套規則&#xff0c;第一套弱約束&#xff0c;第…

SpringCloud帶你走進微服務的世界

認識微服務 隨著互聯網行業的發展&#xff0c;對服務的要求也越來越高&#xff0c;服務架構也從單體架構逐漸演變為現在流行的微服務架構。這些架構之間有怎樣的差別呢&#xff1f; 單體架構 單體架構&#xff1a;將業務的所有功能集中在一個項目中開發&#xff0c;打成一個…

FastAPI復雜查詢終極指南:告別if-else的現代化過濾架構

title: FastAPI復雜查詢終極指南:告別if-else的現代化過濾架構 date: 2025/3/14 updated: 2025/3/14 author: cmdragon excerpt: 本文系統講解FastAPI中復雜查詢條件的構建方法,涵蓋參數驗證、動態過濾、安全防護等18個核心技術點。通過引入策略模式、聲明式編程等技術,徹…

Ubuntu 22.04使用pigz多線程快速解壓/壓縮文件

最近搞項目&#xff0c;資料太大&#xff0c;解壓時間太久&#xff0c;于是想辦法解決。 開貼記錄。 1.安裝pigz sudo apt install pigz 2.解壓資料 解壓命令為 tar --use-compress-programpigz -xvpf ***.tar.gz 將最后的部分***.tar.gz換成你自己的文件即可 例如 ti…

Amazon Quantum Ledger Database (QLDB):革新數據可信記錄的終極解決方案

在數字化浪潮中&#xff0c;企業數據的安全性與可信性成為核心挑戰。無論是金融交易的透明審計、供應鏈的全程追蹤&#xff0c;還是醫療記錄的真實性驗證&#xff0c;如何確保數據不可篡改且可追溯&#xff0c;已成為企業亟待解決的難題。Amazon Quantum Ledger Database (QLDB…

日本IT|AWS工作內容及未來性、以及轉職的所需資質和技能

AWSとは AWSはAmazon Web Services&#xff08;アマゾンウェブサービス&#xff09;の略稱です。 名稱から分かるとおり、ネットを通じた通販などを事業として行っているAmazon.com社がクラウドサービスとして運営しています。 本來であれば自分たちでインフラ環境を構築する…

Conda+jupyterlab

文章目錄 1、Conda1.1、基本介紹1.2、conda安裝1.3、conda常用命令1.3.1、基本命令1.3.2、環境管理 2、Jupyterlab2.1、基本介紹2.2、安裝使用 3、pycharm中使用conda 1、Conda 1.1、基本介紹 Conda 是一個開源的包管理和環境管理工具&#xff0c;適用于 Python 及其他編程語…

Vue 項目中 CDN 引入的利弊及解決方案

在Vue項目中&#xff0c;引入到工程中的所有js、css文件&#xff0c;編譯時都會被打包進vendor.js&#xff0c;瀏覽器在加載該文件之后才能開始顯示首屏。若是引入的庫眾多&#xff0c;那么vendor.js文件體積將會相當的大&#xff0c;影響首屏的體驗。通過調試發送時間主要消耗…

擁有一臺云服務器能做什么呢?

擁有一臺云服務器就像擁有了一臺24小時在線的遠程電腦&#xff0c;你可以通過互聯網隨時隨地管理它。它的用途非常廣泛&#xff0c;無論是個人學習、開發測試&#xff0c;還是企業級應用部署&#xff0c;都能發揮重要作用。以下是常見的應用場景&#xff0c;按需求分類整理&…

PHP 在 if 判斷時由于運算符優先級導致 false 的問題

首先來看一段代碼&#xff1a; $price 187.50;if (!is_numeric($price) || $price < 0 || ($price * 100 > 1000000)) {echo "價格錯誤&#xff1a;$price\n"; } else {echo "價格正確&#xff1a;$price\n"; }乍一看是不是認為并沒有什么問題&…

從零基礎到能獨立設計單片機產品,一般需要經歷哪些學習階段?

相信很多人&#xff0c;內心都有“鋼鐵俠”的幻想&#xff0c;成為能寫程序&#xff0c;能設計硬件&#xff0c;能設計結構&#xff0c;能焊接的全能型人才。 上次徐工問我&#xff0c;如果你財富自由了&#xff0c;想去做啥&#xff1f; 我說出來&#xff0c;可能大家都不信&a…

Liunx啟動kafka并解決kafka時不時掛掉的問題

kafka啟動步驟 先啟動zookeeper&#xff0c;啟動命令如下 nohup ./zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties > /home/kafka/kafka/zookeeper.log 2>&1 &再啟動kafka&#xff0c;啟動命令如下 nohup ./kafka-server-start.sh…

使用STM32CubeMX配置定時器中斷實現LED每秒閃爍一次(STM32G070CBT6)

說明&#xff1a; 本案例采用的定時器3&#xff08;TIM3&#xff09;實現&#xff0c;使用其他定時器是一樣配置。 如何新建一個工程以及如何配置LED的端口&#xff0c;請查看前面文章&#xff1a;使用STM32CubeMX實現LED燈每秒閃爍一次&#xff08;STM32G070CBT6單片機&…

暴力破解Excel受保護的單元格密碼

暴力破解Excel受保護的單元格密碼 分享一個暴力破解Excel受保護的單元格密碼的方法 第一步 在Excel中按下Alt F11&#xff0c;打開Visual Basic for Applications&#xff08;VBA&#xff09;編輯器。 第二步 在VBA編輯器中&#xff0c;點擊插入菜單&#xff0c;選擇模塊…

Git常用操作之GitLab

Git常用操作之GitLab 小薛博客官網&#xff1a;小薛博客Git常用操作之GitLab官方地址 1、GitLab安裝 https://gitlab.cn/install/ 1、Docker安裝GitLab https://docs.gitlab.cn/jh/install/docker.html 1、設置卷位置 在設置其他所有內容之前&#xff0c;請配置一個新的…

pgsql創建新用戶并賦只讀權限

在 PostgreSQL 中&#xff0c;為新用戶賦予只讀權限的步驟如下&#xff1a; —### 1. 創建新用戶首先&#xff0c;創建一個新用戶&#xff08;角色&#xff09;&#xff0c;并設置密碼&#xff1a;sqlCREATE ROLE 用戶名 WITH LOGIN PASSWORD 密碼;例如&#xff1a;sqlCREATE R…

數據結構與算法——算法3 面試常用排序算法

首先了解排序算法性能和優缺點 然后了解快排 和堆排序的方法。 可以參考如下的博客 八大排序(超詳解附動圖源碼)

linux root丟失修改密

在RHEL7下重置密碼 第一種方式&#xff1a;光驅進入急救模式 //做之前最好 selinuxdisabled Conntinue 然后chroot /mnt/sysimag 然后編輯/etc/shadow文件 第二種方式&#xff1a; 1&#xff1a;編輯啟動菜單按e,找到linux16行&#xff0c;在行尾加入 init/bin/sh,同時在…

數據類設計_圖片類設計之3_半規則圖類設計(前端架構基礎)

前言 學的東西多了,要想辦法用出來.C和C是偏向底層的語言,直接與數據打交道.嘗試做一些和數據方面相關的內容 引入 接續上一篇討論半規則圖類型的設計 半規則圖的定義 什么是半規則圖?筆者看見了一些似乎規則又不是太規則的圖形,例如帶圓角的矩陣,在頁面上找一個圓角框 為了…

Qt 信號與槽機制

1. 信號 和 槽 Qt 信號與槽機制 是一種用于對象間通信的低耦合設計模式&#xff0c;核心思想是&#xff1a;當某個信號觸發&#xff0c;自動調用預先關聯的處理函數&#xff08;槽函數&#xff09;。 在 Qt 中&#xff0c;如果一個類需要使用信號與槽機制&#xff0c;則該類必…