在看這篇文章之前首先思考幾個問題:
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 什麼叫色彩的飽和度 色彩的飽和度,就是顏色色調的可見程度,也稱色的純度。是指顏色純淨和鮮明的程度。某種顏...