【OpenCV配置之二】VS2013:LNK2038 RuntimeLibrary不匹配問題(Release Debug混合錯誤)

最近爲了運行從github上下載的背景算法提取代碼,我爲我的Visual Studio配置了OpenCV和Boost1.61的環境。
OpenCV大家都很熟悉,Boost庫是由Boost社區開發支持的可面向C++的標準程序庫,其中也包括graph這種具有工業強度的庫供廣大程序員使用。
我在參考了網上配置的OpenCV教程,採用2.4.10版本,配置之後出現了
LNK2038的錯誤:mismatch detected for ‘_ITERATOR_DEBUG_LEVEL’: value ‘0’ doesn’t match value ‘2’ in xxx.obj
大概就是編譯中不匹配的問題,經網上搜索提示是VS2013中Release和Debug兩個版本代碼生成的問題,然後解決方案參考如下:
項目屬性 -> 配置屬性 -> C/C++ -> 代碼生成 -> 運行庫

都設置一樣就行了 多線程調試(/MTd),具體是MT MD MTd MDd的修改還是參考你報錯的信息。具體說明參考如下:
http://blog.csdn.net/xiaowei_cqu/article/details/7586449
https://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

但是按照以上修改之後,LNK2038的問題依然沒有解決,還報一些找不到頭文件和其他庫文件的錯誤,於是我察覺到是OpenCV配置的時候沒有考慮編譯版本和平臺。
這裏如果你也遇到和我一樣的問題,可以參考一下。

在配置OpenCV方面
百度有很多類似的配置方案,具體就不詳細說了,可參考這裏http://blog.csdn.net/u010128736/article/details/50545532

但是不知道是我個人電腦的問題還是運行的VS2013項目問題,我通過以上方法仍然無法正常運行程序,報錯大概原因是Release和Debug之間混合使用問題,引用一句大神原話:(文章末尾我會附上出處)
In short you are probably mixing release and debug dlls.

也正是這句話讓我認識到問題所在,於是我重新配置的OpenCV
我採用的方法如下:
1、下載相應Opencv2.4.10和VS2013
2、配置系統變量
3、建立/打開一個Win32應用程序的項目
和其他的地方區別在於,打開項目的屬性頁(找不到可以從視圖—其他 裏面找),爲”Debug|Win32”和”Release|Win32”右鍵新建配置,分別添加一個配置文件,然後分別對配置文件進行一次OpenCV配置,就是配置重複兩次(當然簡單的方法可以直接複製之前配置好的屬性)。

具體可以參考這篇博客的配製方法:
http://blog.csdn.net/u014574279/article/details/50909425

【我認爲配置OpenCV,尤其對於初學者不太懂調試VS的(比如我..)用這種配置方法更保險一些。】

配置完成之後,我的項目成功運行了。(小白摸索過程就是如此艱辛,別人幾分鐘解決的我花了幾天╮(╯▽╰)╭)…
CSDN新人小白,如果文中有說的不對的地方,歡迎拍磚,謝謝!

附上Opencv2.4.10的鏈接庫目錄,備日後用:
opencv_ml2410d.lib
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib

opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_nonfree2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_videostab2410.lib
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib

上文提到的大神回答參考鏈接:
http://stackoverflow.com/questions/7668200/error-lnk2038-mismatch-detected-for-iterator-debug-level-value-0-doesnt/10432718NDUBUG

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章