opencv檢錯:程序運行過程正常,當跳出函數時出現斷言錯誤(Debug Assertion Failed)


轉載http://blog.csdn.net/u012327581/article/details/51351780

1.問題描述

在VS2015下配置好Opencv后,程序在函數運行過程中正常,調試時發現,當運行至跳出函數時,出現斷言錯誤。

2.原因分析 

單步跟蹤調試發現,在函數結束時會進行vector的析構,出現了析構錯誤。並且,如果vector在定義完成之后,進行resize或reserve操作,將vector空間做大,問題消失。后來查閱資料,結合親身測試,發現是在調用Opencv 庫時,由於opencv庫編譯使用的是 VC12(或者VC10/VC11)編譯的,而本人使用的VS2015使用的時VC14(14是內部編碼),不同版本的編譯器造成析構方法沖突。

3.解決方法

使用VC12版本的庫,需要使用VC12的編譯器即可,如VS2012、VS2013 
使用VC14編譯器時,截至目前,Opencv官網的2.4.*系列版本的庫只有VC10/VC11/VC12編譯的版本,只有OpenCV3.0之后的版本含有VC14編譯的版本。因而本人又重新將opencv使用VS2015進行編譯,設置好參數后,問題解決。

 


 卸載vs2015,裝上VS2012之后,運行某些vector不會報錯了,但是並非所有的vector都能正常運行(這個真的很坑人),重新出現的斷言錯誤如下

此處省略,詳情查看下面的鏈接……

詳細鏈接  http://blog.csdn.net/jianjian1992/article/details/49247003

上面的3樓,針對部分vector有用(占空間不那么大的程序),如果是針對視頻的處理,最終還是會失敗(治標不治本)。

使用1樓的方法,將依賴庫進行修改(改成沒有d的情況,末尾有d是debug模式,沒有d才是release模式)

改成release模式后雖然能用,但始終沒有明白原因,o(╯□╰)o

 


免責聲明!

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



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