应用其他人的一个Matlab & C++混合编程程序时遇到的问题,C++程序用到了OpenCV,在运行.m文件时遇到了“invalid mex-file 找不到指定的模块”的错误。在此简述解决方案与其它人提到可能的处理方法。
1. 确定编译器版本
在matlab命令提示行输入
mex -setup
点击
mex -setup C++
选择希望的编译器版本
2. 确保配置了OpenCV的环境变量。
这里用的是VS2013即VC12,程序使用的为64位,matlab也为64位,故建议配置OpenCV中对应中
...\vc12\bin
的环境变量。(尽管后来尝试改变vc版本也没有发生对应不上的问题)
此时运行生成.mexw64文件的编译程序和使用该文件的Demo程序都不会再出现问题了。该错误的发生原因主要是编译版本对应错误,以及环境的遗漏。
网络上其他人还给出了以下几点:
- 确保Windows\System32下有msvcp100.dll、msvcr100.dll文件,并将其复制到运行.m文件的路径下。
(就是说VC12就要对应msvcp120.dll喽?) - 将OpenCV的bin目录复制到运行.m文件的路径下,并在代码中
addpath('bin');
(个人认为只要环境变量配置正确Matlab就能够找到OpenCV的DLL)
本机环境:
Win10 64位,VS2013,Matlab2016a 64位,OpenCV 2.4.13(使用64位)
转载请注明出处:http://blog.csdn.net/u011185952/article/details/52984549