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


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

  • 計算機視覺方面的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文件添加到鏈接器->輸入->附加依賴項。

 

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

 

可能遇到的錯誤:

1.NuGet Error:Unable to find version '2.4.11' of package 'OpenCV.overlay-x64_v120_Release'.

進入命令行的NuGet 包管理器控制台,然后手動安裝這個包。

Install-Package OpenCV.overlay-Win32_v140 -Version 2.4.11

解決方法來源:https://libraries.io/nuget/OpenCV.overlay-Win32_v140_Debug

只是在這里,他安裝的指明了debug版本,我試了不好用個,就刪掉了

2.NuGet Error:未知命令:“overlay”

刪除解決方案下的.nuget文件夾,重新生成解決方案。

解決方案來源:https://blog.csdn.net/u011185952/article/details/52577620

解決方案來源的來源:https://social.msdn.microsoft.com/Forums/vstudio/en-US/6eee7078-d3d1-4c95-b5d5-6753228888e5/opencvtargets-error-nuget-error-overlay?forum=vssetup


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM