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

2022-09-01 19:30:12 字數 1859 閱讀 2627

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

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

這是工程配置的不好造成的。很多人在配置工程引用檔案的時候使用絕對位址,例如配置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)所在的目錄。兩個點(..)表示當前目錄的上乙個目錄,這裡的意思就是在工程檔案上乙個目錄裡的那一堆路徑下。這樣配置完之後就可以在不同的電腦上使用了。

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

可能遇到的錯誤:

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
只是在這裡,他安裝的指明了debug版本,我試了不好用個,就刪掉了

2.nuget error:未知命令:「overlay」

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

可移植的檔案路徑

1.第一種獲取檔案絕對路徑,再通過路徑建立流即可 string path thread.currentthread getcontextclassloader getresource 以src為起點的相對路徑 getpath 第二種直接獲取流物件 inputstream in thread.curr...

可移植C C 設計

1.分層設計,隔離平台相關的 就像可測試性一樣,可移植性也要從設計抓起。一般來說,最上層和最下層都不具有良好的可移植性。最上層是gui,大多數gui都不是跨平台的,如win32 sdk和mfc。最下層是作業系統api,大多部分作業系統api都是專用的。如果這兩層的 散布在整個軟體中,那麼這個軟體的可...

可移植表空間

一 選擇可移植表空間 要想移植表空間,該錶空間必須是自包含的。使用下列方法檢視表空間是否為自包含 begin dbms tts.transpoort set check tablespace name true end 如果沒有返回錯誤,則表空間為自包含的。當然如果表空間是非自包含的,也可以在匯出時...