前言:和靜態鏈接庫不同的是,靜態鏈接庫是在程序編譯的時候就需要的,而動態鏈接庫是在程序執行的時候才需要,在VS2017這樣的集成開發環境之下,動態鏈接庫的配置方式有很多,很多文章只說了其中一些,本文針對此種情況做一個簡單的彙總。
一、直接拷貝法
將需要的動態鏈接庫直接拷貝到和可執行程序的同目錄之下,這是最常見,最通用的方法了。
二、拷貝到兩個特殊的目錄
- 32位的 x86的動態鏈接庫 .dll 文件拷貝到C:\Windows\SysWOW64目錄下
- 64位的 x64的動態鏈接庫 .dll 文件拷貝到C:\Windows\System32目錄下
親測可用,但是具體爲什麼,我還沒有搞得特別清楚,望有大佬告知,這種方式可以一次拷貝,永久使用。
三、設置項目屬性
將我們需要的動態鏈接庫文件放在某一個目錄,然後我們通過設置項目屬性來完成,
執行“項目屬性/調試/環境”
如下:
然後編輯一個內容到這個環境中去,設置一個path變量,變量的值就是動態鏈接庫的目錄所在,如下:
path=C:\Users\Administrator\Desktop\Pre-built.2\dll\x64
Path=C:\Users\Administrator\Desktop\Pre-built.2\dll\x64
PATH=C:\Users\Administrator\Desktop\Pre-built.2\dll\x64
這幾種形式都可以,我自己試驗過,path不區分大小寫。
個人猜想:在vs中動態鏈接庫會在環境變量path中尋找動態鏈接庫,而前面的
- C:\Windows\SysWOW64
- C:\Windows\System32
這兩個目錄都是在path之下的,所以這就是爲什麼想很多庫的配置,比方說OpenCV,也要求將某幾個動態鏈接庫放置在上面的兩個目錄之下,而且這樣可以做到一勞永逸,不用每次都配置或者是複製相關的鏈接庫。不正確的話希望有大佬告知!!!
那如果是同時通過上面三種方式指定了動態鏈接庫,搜索順序怎麼樣呢?
windows一般搜索的動態鏈接庫dll目錄爲System32或者SystemWOW64目錄、PATH環境變量指定、以及當前目錄。
實際上我們可以通過項目屬性進行查看的,如下: