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. 創建測試項目
- 在 Visual Studio 里創建一個新的控制臺項目 (Console App):
文件 (File) → 新建 (New) → 項目 (Project)
- 選擇 C++ 控制臺應用 (Console App)
- 命名為
TestApp
- 讓 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 臨時文件存放路徑 |