OpenCV,Matlab和STL容器

Pet*_*ter 5 c++ matlab opencv stl mex

最新版本的OpenCV中的许多功能都需要使用STL容器.尝试在Matlab MEX文件中使用它时遇到问题.我正在Matlab中编译MEX文件.OpenCV和Matlab都使用"/ MD"标志,它是"多线程DLL",用于代码生成.

编译:MSVC++ 9.0 Matlab 2010a OpenCV最新SVN,2.11我认为.

我使用的代码非常简单:

vector<KeyPoint> keypoints_vec;
SurfFeatureDetector surf;
surf.detect(cvImg,keypoints_vec);
Run Code Online (Sandbox Code Playgroud)

当在Matlab MEX文件中运行时,这会编译但崩溃.崩溃在vector :: resize中的OpenCV中.旧接口(没有STL容器)工作正常,但已弃用.如何在Matlab和OpenCV之间使用STL容器?

cod*_*joe 1

很久以前,我在使用 Matlab <-> VS 互操作时遇到了问题。这可能是一些 Microsoft Visual C++ 运行时库的差异。检查 matlab 需要什么运行时库以及您的 Visual Studio 具有什么版本。我记得使用 Depends 来获取我的程序的 dll 依赖项。崩溃后检查你的调用堆栈(通过附加你的 msdev 调试器)它可能会给你一些提示。

那是很久以前的事了,所以我只是提供一些我记得的暗示。

  • 检查它是否在 Matlab dll 内或 MS 运行时 dll 内崩溃(通过附加调试器)。 (2认同)