Win7 64位 + VS2015 +Opencv3.3.0重編譯
Win7x64 + VS2015 + Opencv3.3.0重編譯
一、下載安裝
二、重編譯
1、用CMake生成VS2015的OpenCV工程
第一步:開啟CMake解壓後的資料夾,在目錄D:\cmake-3.8.2-win64-x64\bin下雙擊cmake-gui.exe;
第二步:在彈出的CMake窗口裡,輸入Opencv原始碼所在路徑;
第三步:在D盤目錄下建立新資料夾MyOpenCV,用於生成的OpenCV工程存放目錄,如果不建立,好像在Configure後會彈出錯誤框,提示“Error inconfiguration process, project files may be invalid”;
第四步:點選“Configure”按鈕;
第五步:在彈出的對話方塊中選擇編譯器Visual Studio 14 2015(這裡需要注意的是該編譯器生成的是x86的檔案,如果編譯64位dll應該選擇64位的,我這裡選成了32位的(無意的,當時選的時候不知道這些),不過後面看網上說一般都用32位的編譯器,32位和64位後面操作應該差不多);
按照上述設定後,點選“Finish”後就開始執行第一次生成。可能我的網速比較慢,別人說2min就好了,我整個過程下來,都看了兩集《老友記》了。
第一次生成後
第六步:第一次“Configure”生成之後,但還需要第二次執行生成,再次單擊“Configure”按鈕,執行第二次生成;
第七步:經過兩次“Configure”之後,點選“Generate”按鈕生成最終的OpenCv解決方案。退出Cmake。
2、用VS2015編譯生成自己Opencv庫
第一步:生成後在自己建立的資料夾MyOpenCV下檢視生成的專案,雙擊開啟工程OpenCV.sln;
第二步:在CmakeTargets下選擇ALL_BUILD,右鍵單擊生成;
第三步:在CmakeTargets下選擇INSTALL,右鍵單擊生成;
第四步:生成好後,開啟MyOpenCV資料夾,將install資料夾拷貝到D:\opencv下,並將install重新命名為vc14x86。此時D:\MyOpenCV沒用了,但不能刪除,否則無法跟蹤原始碼,網上說可以通過“清理解決方案”來減小,我還沒有嘗試。
將install資料夾拷貝到D:\opencv下,並重命名為vc14x86。
三、配置環境
1、環境變數配置
右擊計算機->屬性->高階系統設定->高階->環境變數,找到系統變數中的path,點選編輯,新增路徑 :
D:\opencv\vc14x86\x86\vc14\bin
2、VS2015中配置
第一步:新增好環境變數後,開啟VS2015,新建一個空的C++win32控制檯工程,並在原始檔中新增一個cpp檔案,比如:main.cpp;
第二步:開啟選單欄中檢視->其他視窗->屬性視窗,在屬性管理器列表中選擇Debug|Win32 -> Microsoft.Cpp.Win32.user,右鍵點選屬性(注意如果之前生成的是x64的,應選擇Debug|x64)對屬性進行配置;
第三步:通用屬性 -> VC++目錄 ->包含目錄中新增
D:\opencv\vc14x86\include
D:\opencv\vc14x86\include\opencv
D:\opencv\vc14x86\include\opencv2
第四步:通用屬性 -> VC++ 目錄 -> 庫目錄中新增
D:\opencv\vc14x86\x86\vc14\lib
第五步:通用屬性 -> 連結器 -> 輸入 -> 附加依賴項中新增
opencv_calib3d330d.lib
opencv_core330d.lib
opencv_dnn330d.lib
opencv_features2d330d.lib
opencv_flann330d.lib
opencv_highgui330d.lib
opencv_imgcodecs330d.lib
opencv_imgproc330d.lib
opencv_ml330d.lib
opencv_objdetect330d.lib
opencv_photo330d.lib
opencv_shape330d.lib
opencv_stitching330d.lib
opencv_superres330d.lib
opencv_video330d.lib
opencv_videoio330d.lib
opencv_videostab330d.lib
四、測試
在main.cpp中編寫如下程式碼:
設定斷點,進入imread函式:
五、配置過程中出現的錯誤
1、錯誤一
錯誤一:第一次點選Configure後出現錯誤提示:“Error in configuration process, project files may be invalid ”
解決方法:在D盤目錄下建立新的資料夾MyOpenCV。
2、錯誤二
錯誤二:在錯誤一解決後再點選Configure時出現下列錯誤提示:“CMake Error at CMakeLists.txt:127 (Project): No CMAKE_CXX_COMPILER could be found”。
這是因為預設的編譯器是Visual Studio 15 2017, 網上說cmake會自動選擇本機已經安裝的目標編譯器,我就沒有改,但點選“finish”後,彈出錯誤。
解決方法:更改預設的目標編譯器,首先點選CMake左上角的File->Delete Cache,把之前選擇的清除掉再重新選擇。VS2015對應vc14,應該選Visual Studio 14 2015(這裡需要注意下,這個版本生成的是x86,網上很多說這個問題的,但當時我也沒特別注意,就選的這個編譯器。記得有個Visual Studio 14 2015 x64,忘了具體是什麼名稱,記得有個64,選擇那個編譯器生成的應該是x64。不過也沒關係,生成x86也一樣用)
3、錯誤三
錯誤三:按照別人的參考文章,雙擊OpenCV.sln後直接F5編譯,會彈出這個錯誤提示:無法啟動程式:“D:\MyOpenCV\Debug\ALL_BUILD”,系統找不到指定的檔案。
解決方法:點選確定,在CmakeTargets下選擇ALL_BUILD,右鍵單擊生成,再選擇INSTALL,右鍵單擊生成(具體參考上文步驟)
4、錯誤四
錯誤四:彈出如下錯誤提示:“原始檔與模組生成時的檔案不同。是否希望偵錯程式使用它?”
這裡應該是我之前選的都是x64,最後生成的是x86的。
解決方法:點選“是”。