1. 程式人生 > >可移植的配置visual studio工程第三方庫

可移植的配置visual studio工程第三方庫

為什麽 需要 另一個 路徑配置 引用 自動下載 不同 失敗 .com

現在編程有太多的好用的第三方庫,例如

  • 計算機視覺方面的opencv
  • c++的擴充庫boost
  • 特殊的第三方庫,相機庫,通訊庫等

使用這些庫給我們帶來了極大的便利,同時也有很多困擾。這個工程在我電腦上明明很好用的,但是為什麽在你電腦上就沒法編譯呢?

這是工程配置的不好造成的。很多人在配置工程引用文件的時候使用絕對地址,例如配置opencv的include文件,配置地址為C:\opencv\build\include\opencv。但是在另一個電腦上,opencv可能不在這個地址,這時候vs就無法找到相應的頭文件,所以會造成編譯失敗。

那麽怎麽解決呢?

第一種解決方法就是vs提供的nuget來對引用的庫進行管理。類似*unix系統裏的包管理,他會管理項目所需要的庫文件,以及其依賴項。

這裏以opencv為例子講解。選擇工具->NuGet程序包管理器->管理解決方案的NuGet程序包。

技術分享圖片

這裏可以看到我使用了四個程序包,在你的解決方案裏應該是沒有程序包的。點擊聯機,去搜索需要的程序包。

技術分享圖片

這裏我在右上角輸入了opencv進行搜索,可以看到搜索出了許多關於opencv的程序包。選擇你需要的程序包。由於我已經安裝過了,所以可以看到一個對勾。如果你沒有安裝,就如我選擇的opencvsharp3,點擊安裝。

技術分享圖片

之後會自動下載,並安裝,然後讓你選擇你需要使用程序包的工程。就完成了。

技術分享圖片

之後在解決方案上右鍵,選擇Enanble NuGet Package Restore,就可以啟用NuGet程序包。然後就可以在項目裏使用opencv了。而且拷貝到其他電腦上也只需要恢復一下就可以使用。

技術分享圖片

方法二:

但是方法一需要有人在nuget上維護你需要的庫,如果沒有的話就沒辦法。拿我的在做的項目來說,opencv的庫是有的,但是相機的庫就沒有。那麽還是需要自己手動管理庫文件,但是稍微修改以下配置方法。就是把需要的第三方庫放在解決方案文件夾裏,然後使用相對路徑的方式進行引用。

對於包含目錄(include),原來的配置方式和相對路徑配置方式對比如下。這裏,相對路徑是相對於工程文件(*.vcxproj)所在的目錄。兩個點(..)表示當前目錄的上一個目錄,這裏的意思就是在工程文件上一個目錄裏的那一堆路徑下。這樣配置完之後就可以在不同的電腦上使用了。

技術分享圖片

對於用於鏈接的庫文件(*.lib)也是同樣的道理,然後在將需要使用的.lib文件添加到鏈接器->輸入->附加依賴項。

技術分享圖片

通過上面兩個配置,將解決方案需要用到的庫文件都配置完成,並且可以在不同的電腦上進行編譯。

可移植的配置visual studio工程第三方庫