前言:
在windows下做c++開發,經常會遇到一些頭文件找不到、符號找不到、動態庫找不到等問題。因此有必要梳理一下C盤下的一些目錄中到底存放了哪些東西,做這件事情:
- 一是便於解決開發環境下的問題;
- 二是有利於我們開發誇系統版本運行的程序,很多時候,開發環境下正常運行的程序一旦丟到目標環境下運行,很大概率無法正常運行。
架構:
C盤下一般會有這樣兩個目錄:
Program File
Program File(x86)
Program File爲64位應用程序的默認存放路徑,Program File(x86)爲32位程序的默認存放路徑。
像vs這樣的軟件一般都是安裝到Program File(x86)目錄下。
VS安裝路徑:
vs2015及其之前的版本
vs2013的安裝路徑是Microsoft Visual Studio 12.0,可以在 C:\Program Files (x86) 中找到這個目錄,我們在安裝vs2013是選擇的所有套件的SDK(.h .lib .dll)都存放在這個目錄下,比如 .net python directx 等等。
Microsoft Visual Studio 12.0下又有一個VC目錄,這個目錄中存放了C/C++的基本SDK(.h .lib .dll),比如說 stdio.h就在這個路徑下。
下表爲不同vs對應的安裝目錄名稱
vs2015 | Microsoft Visual Studio 14.0 |
vs2014 |
Microsoft Visual Studio 13.0 |
vs2013 | Microsoft Visual Studio 12.0 |
vs2012 | Microsoft Visual Studio 11.0 |
vs2010 | Microsoft Visual Studio 10.0 |
vs2008 | Microsoft Visual Studio 9.0 |
... | ... |
vs 2015 之前的版本都會創建自己的目錄,如果機器上裝了多個版本的vs,那麼在C:\Program Files (x86)中你可以同時看到以上目錄的存在。
這就帶來一個問題,C/C++的SDK存在多個版本,這些版本分別放在不同的路徑下。這裏需要注意,一旦弄錯,整個工程的結構便會混亂,以後輸出的exe也將出現依賴混亂。
比如 vs2013 開發環境中配置了 vs2015 的sdk,有可能開發時不會有問題(因爲有些開發人員在配置環境時就是稀裏糊塗,只要編譯通過就行),但是一旦丟到目標機器上運行時就極可能會有各種各樣的問題,比如目標機器上裝的時2013的運行時庫,而我們使用的是vs2013 IDE 和 vs2015 SDK,這就可能出現庫文件版本不匹配的問題。
正常情況下,我們在打開對應版本vs時,vs會使用自己安裝路徑下的那個SDK作爲默認SDK搜索路徑(頭文件搜索路徑,庫文件搜索路徑)。
vs2017及其之後的版本
vs2017開始,便使用C:\Program Files (x86)下的公共目錄Microsoft Visual Studio,在此目錄中可以看到不同版本號,比如:
2017 和 2019 中的內容 和 之前的 Microsoft Visual Studio xx.0 是一樣的, 即 vs 安裝時指定的 套件以及這些套件對應的SDK。
SDK路徑對比:
2013的SDK路徑示例:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC 。 如下圖
2017的SDK路徑示例 :C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC 。如下圖:
這一串數字是版本號,裏面的內容和上圖一樣
PS:
C:\Program Files (x86)\Microsoft Visual Studio 12.0 目錄截圖:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community 目錄截圖:
Windows Kits目錄 和 Microsoft SDKs目錄
Microsoft SDKs 包含 Windows Kits,我們可以在VS管理界面中自定義選擇安裝那個版本的SDK
注:這裏的SDK和Microsoft SDKs目錄不是一回事,SDKs目錄存放着Windows下各種開發語言的SDK合集,而這裏的SDK專指C/C++語言的SDK,通過下面的截圖也可以看出來。
安裝SDK
具體流程爲:工具 === > 獲取工具和功能 ,彈出管理頁面,並選擇想要安裝的C/C++ SDK版本:
安裝成功後
相應的SDK將會被安裝至: C:\Program Files (x86)\Windows Kits\ 內,具體的子目錄由當前操作系統決定,比如本人機器爲win10的系統,那麼具體的安裝路徑則爲 C:\Program Files (x86)\Windows Kits\10\bin。同級目錄下還可以看到其他版本的SDK。
Windows SDK 的下載和版本兼容性問題:
目錄解釋:
上面說到了Windows Kits目錄 和 Microsoft SDKs目錄,我們知道Windows SDK在Windows Kits目錄下,如下:
進入相應目錄,可以看到
再點進去,便可以看到當前已經下載的 SDK 版本有哪些:
這些版本號目錄下存放的便是 .h 文件 和 .lib 文件,比如 WS2_32.Lib 就在 \um\x86 下。
可以認爲:Windows Kits下存放的就是 Windows SDK
下載:
我們可以在如下地址下載SDK :https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
兼容性:
在下載頁面中可以找到關於此SDK的一些說明,其中就包括使用此SDK生成的代碼可以在那些操作系統版本上運行,比如: