Opencv學習筆記——release和debug兩個模式的運行問題


本文為原創作品,轉載請注明出處

歡迎關注我的博客:http://blog.csdn.net/hit2015springhttp://www.cnblogs.com/xujianqing/

作者:晨鳧追風

關於Opencv的一個bug的解決方法

錯誤:

Opencv配置完之后運行一切都很正常,也愉快的弄了一些demo,然而突然有一天,我心血來潮想要在release下運行一下自己的代碼,於是出現了一個很美的畫面:

 

 

輸出窗口顯示錯誤信息:

0x50AA8B98 (opencv_highgui249d.dll) (template_example.exe 中)處的第一機會異常: 0xC0000005: 讀取位置 0xACC6BCCD 時發生訪問沖突。

0x50AA8B98 (opencv_highgui249d.dll) (template_example.exe 中)處有未經處理的異常: 0xC0000005: 讀取位置 0xACC6BCCD 時發生訪問沖突。

 

 

提示內存錯誤,算是Opencv的一個bug,在Debug下可以運行,在release下卻不能運行報錯。

 

介紹一下來龍去脈:

在對Opencv進行配置的時候,配置鏈接庫的時候會有一堆 .lib的文件,其中Debug文件庫名有d結尾,release沒有d

如:opencv_video249d.lib debug 庫。

opencv_video249.lib release 庫。

按照一般的網上配置教程,會出現debug下可以運行,release下不能運行的情況(報錯原因是由於字符串讀取問題引起的如圖像載入不了,內存出現錯誤,指針錯誤等情況)。

因為在附加依賴項配置的時候,會優先選擇寫在前面的那一類lib作為支持的調試方式,一般我們把帶d的寫在前面,於是就出現了默認在debug下可以載入圖像,識別字符串等操作。如果把不帶d的寫在前面,那就默認release下調試。

 

 

解決方法:

在配置的時候就添加一類依賴項,如:就只添加帶d的那一類,於是就只支持debug模式下的調試,這時候想要在release下也能調試,就在當前工程的release模式下自己將不帶d的依賴項添加進去:【項目】—【屬性】—【配置屬性】—【鏈接器】—【輸入】—【附加依賴項】,添加即可。

上圖:1、選擇release模式調試

 

 

 

 

                                                                                                                                   

                                               

 

 

 

 

2、選擇當前項目屬性

 

 

 

 

3、添加附加依賴項:把不帶d的庫添加進去,運用就ok

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

至此完成。

 

感覺在配置的時候只添加一類,只添加帶d的或者只添加不帶d的庫,這樣在用到另外一種模式的時候再去修改當前工程的屬性配置(並不是之前的固有屬性)。這樣做讓人感覺更加清爽,兩個全部添加,畢竟系統只默認在前面的那一種庫

 

如有不足之處歡迎批評指正,原創作品,轉載請注明出處!謝謝!后續的學習總結會陸續推出!歡迎廣大愛好者交流!

 


免責聲明!

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



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