2014-12-02 227 views
1

我在Qt Creator中创建了一个OpenCV项目。这个非常简单的代码是导致内存破坏:cv :: imread()导致内存损坏

std::string fileName = "c:\\Workspace\\ImageProcessing\\Tutorials\\src\\images\\test.jpg"; 
cv::Mat mat = cv::imread(fileName.c_str()); 

执行代码后,cv::Mat是空的,而且文件名的内容充满了垃圾。我读了imread not working in OpencvOpenCV imread(filename) fails in debug mode when using release libraries

我检查了我自己的项目,但我没有混合调试和发布库。还有内存损坏。

回答

1

事实证明,我使用MSVC9(VS2008)编译器为我的Qt Creator项目,但使用使用MSVC10(VS2010)编译的OpenCV。

由于C++接口在编译器版本中不稳定,因此导致内存损坏。问题是,这完全失败,没有任何警告,它通过内存损坏爆炸。

下载使用VS2010构建的Qt版本后,它现在可以工作。