VS工程配置中的一些常用概念

2021-07-14 09:29:30 字數 1993 閱讀 6717

在看這篇文章之前首先思考幾個問題:

1、什麼是解決方案?為什麼要有解決方案?

2、我想引用的標頭檔案和我的cpp檔案不在同乙個資料夾,我改怎麼辦?能直接引用嗎?

3、在配置opencv的時候需要配置的那些庫目錄、包含目錄到底是怎麼回事?

思考完上述問題,下面對上述問題進行解答,並介紹一些vs在工程配置的時候常用的一些做法和概念。盡量做到知其然,知其所以然。

簡單的說解決方案就是多個工程的集合。solution存在的目的就是為了各個project之間方便的共享檔案和**庫。假設我有多個project都需要用到乙個liblinear的**庫,我不要每個專案中都載入這個庫。另外,對於大型的工程專案,為了方便**的管理和閱讀,往往將乙個solution中的所.cpp和.hpp檔案都集中放在乙個資料夾中,然後讓多個project直接包含這個資料夾即可。下面以caffe工程作為例項,講解一下caffe的檔案管理層次和構造。

下圖是caffe的solution:

caffe資料夾下的檔案:

這裡重點關注資料夾下的include、src、windows資料夾。include存放的是整個solution所有的標頭檔案,src存放的是整個solution所有的原始檔(.cpp),window存放的是所有的project檔案。如下圖所示:

include資料夾下的內容:

src資料夾下的內容:

windows資料夾下的內容:

上圖是一般的vs工程需要配置的各個目錄。

1、可執行檔案目錄

搜尋可執行檔案的目錄,對應於環境變數path,

2、包含目錄

對應於環境變數include

搜尋在源**中引用的包含檔案的目錄,即標頭檔案的目錄。例如#include

3、引用目錄

在該視窗中顯示的目錄設定是 visual studio 將搜尋在源**檔案中通過 #using 引用的程式集和模組(元資料)檔案的目錄。對應於環境變數 libpath。

4、庫目錄

在該視窗中顯示的目錄設定是 visual studio 將搜尋庫(包括執行時庫)的目錄。對應於環境變數 lib。簡而言之,這個目錄就是尋找.lib檔案的目錄。

如果設定錯誤,會link error,提示」找不到***.lib」。

另外,該設定不適用於.obj 檔案;若要鏈結到 .obj 檔案,請在「鏈結器」->「常規」屬性頁中,選擇「附加庫目錄」,然後指定.obj檔案的路徑。

5、附加依賴項

c++的庫會把函式、類的宣告放在.h中,實現放在.cpp或.cc中。編譯之後,.cpp,.cc,.c會被打包成乙個.lib檔案,這樣可以保護源**。所以,要使用乙個庫,除了要include他的標頭檔案以外,還要在鏈結過程中把lib加進去。這個就是在附加鏈結庫中設定。

6、有了庫目錄為何還要附加依賴項?

庫目錄只是查詢目錄,而我們具體使用哪乙個.lib需要指明的,如果不在附加依賴項裡填上,就需要在**裡用#pragma comment(lib, 「***.lib」)來手動指定了。寫**讀寫乙個檔案需要寫明檔名,這個檔名就相當於那個lib , 但讀寫這個檔案可以不寫全路徑,這是因為有庫目錄的存在。

vs的一些配置

在vs工具 選項 除錯 常規 址級除錯 源 不可用時顯示反匯 啟用地編。tools option debugging general 找到 require source files to exactly match the original version 不要打勾 即 工具 選項 除錯裡 常規 找...

VS中工程中的一些檔案及功能

vcproj 是vs裡的的工程檔案,相當於vc6的.dsp。sln和.suo是解決方案檔案 net採用兩種檔案型別 sln和.suo 來儲存特定於解決方案的設定。這些檔案總稱為解決方案檔案.為解決方案資源管理器提供顯示管理檔案的圖形介面所需的資訊 ncb檔案記錄了類的提示資訊,如果類的成員函式和變數...

攝影中的一些概念

1 什麼叫色別 色別是用以說明彩色和消色的區別。2 什麼叫明度 明度又叫明暗度,是顏色的深淺,也可以說它的明亮程度。3 色調的含義 色調是指顏色的性質即一張 中一定範圍的明亮程度 也稱明暗值 4 什麼叫色彩的飽和度 色彩的飽和度,就是顏色色調的可見程度,也稱色的純度。是指顏色純淨和鮮明的程度。某種顏...