VS2010引入DLL設定

2021-09-30 10:38:57 字數 1866 閱讀 4670

.dll/.lib目錄設定

如果是直接呼叫第三方的dll,不想將大量dll或lib複製到debug目錄下

可以如圖設定:將環境選項設為path=******。程式就會到此尋找所需載入的.dll

.h包含目錄設定

如果是直接從其他專案引用,建議設定附加包含目錄如下圖

.lib附加依賴項設定

告知程式需要載入哪些.dll檔案

在除錯 visual studio 2008 程式時,經常有一些動態鏈結庫(即 dll 檔案)需要載入到工程裡,這樣才能依賴第三方庫進行程式除錯。

這些動態鏈結庫,往往都是測試版本或是開發中的版本,或者會有若干個版本;這個時候,如果直接把 dll 所在目錄加到 path 裡,則會有潛在衝突的危險;如果直接拷貝到 visual studio 的目錄下,假如測試工程太多,每次有新版本的動態鏈結庫更新時,你需要更新若干次,拷貝、貼上苦不堪言。

在開發過程中,究竟怎樣來讓 visual studio 鏈結這些 lib 及 dll 檔案會比較好呢?

總體上來說,有幾種方法可以改變 visual studio 的環境變數設定:

直接新增到系統的 path 變數裡: 這個方法最簡單,也最直接,但是壞處是會影響全域性的 path 設定,尤其是你包含著大量測試用的 dll 時。

在 visual studio 全域性設定裡,把 dll 所在目錄新增到 path 裡: 通過 visual studio 選單 ==> 工具 ==> 選項 ==> 專案和解決方案 ==> vc++目錄,在下拉框裡選擇"可執行檔案",然後把 dll 所在路徑新增進去。

直接把所有 dll 拷貝到 visual studio 工程目錄下,或是拷貝到生成可執行檔案的資料夾(預設情況下是 debug 或 release 目錄)下: 這個方法也很簡單,但是當你有若干個工程時,你每次更新 sdk 及其 dll 檔案,你就要把所有的工程都更新,這個不符合檔案唯一性的工程性準則。

在除錯程式時,讓 visual studio 幫你切換當前工作目錄到 dll 相應的目錄下: 在 visual studio ==> project ==> properties ==> select configuration ==> configuration properties ==> debugging ==> working directory 裡填上 dll 所在目錄,這樣當在除錯程式時,visual studio 會把當前工作目錄切換到這個目錄下,從而會自動讀取本目錄下的 dll 檔案。

這個方法的優點很明顯,簡單!***也很明顯,在你切換了當前工作目錄後,你可能會找不到程式的配置檔案,在程式裡寫的諸如"./config.ini"全部都找不到了;另外,你要把所有的 dll 都放到這個工作目錄裡,否則一樣會提示說找不到 ***.dll 的問題。

最後乙個方法,也是我認為最好的乙個方法,在 visual studio 工程屬性裡把乙個目錄臨時新增到 path 環境變數裡: msdn 上也有類似的介紹:how to: set environment variables for projects,方法很簡單,在 "工程屬性" ==> "除錯" ==> "環境"裡,新增類似如下所示的內容:

path=%path%;$(targetdir)\dlls
這樣就可以把 $(targetdir)\dlls 臨時新增到該工程所屬的系統 path 裡。

大家可以根據專案的實際情況,靈活選用以上方法。

vs2010設定問題

1.help libary不能選擇以瀏覽器或者視窗的形式開啟,切換不方便 解決辦法 拷貝整個microsoft help viewer覆蓋以前的檔案,覆蓋後可能會遇到vs中f1幫助或者選單欄裡的選項失效,需要手動啟動help libary 解決。vs的help libary有多個版本,不同版本間存在...

vs2010中靜態呼叫dll

在網上搜尋良久,關於靜態呼叫dll的方式講解的都不是很清楚。通過自己摸索,結合網上提供的一些方法,現在總結兩種靜態呼叫dll的方法。一 同一解決方案下面靜態呼叫dll 當我們建立了乙個dll的工程,此工程的預設輸出目錄是在 solutiondir configuration 而此解決方案中,生成.e...

vs2010設定堆疊大小

vs2010設定堆疊大小一塊連續的記憶體的區域。這句話的意思是棧頂的位址和棧的最大容量是系統預先規定好的,在windows下,棧的大小是2m 也有的是1m,總之是乙個編譯時就確定的常數 如果申請的空間超過棧的剩餘空間時,將提示overflow。因此,能從棧獲得的空間較小。是不連續的記憶體區域。這是由...