完美解决matlab“错误使用 mex未找到支持的编译器或 SDK。”的问题
1.需求和遇到的问题
需要在matlab中使用或者调用opencv函数,在网上找了一大圈,大致由两种解决方法:
-
编译mexw64文件
:将c或者c++的程序按照符合matlab接口的规则进行编写,然后用mex进行编译。这种方法对于需要引用库的函数也适用,但是看上去挺复杂的。 -
编译mexopencv
: 编译matlab版本的opencv即可在matlab中调用opencv的函数了。
但是这两种方法的前提都是能够正常启用“ mex -setup”。
mex -setup
于是本人遇到了这个问题:
错误使用 mex 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64
编译器。有关更多选项,请访问http://www.mathworks.com/support/compilers/R2016a/win64.html。
关于这个问题,网上也有很多解决方案。但是如果自己电脑上已经有编译器了(比如装了vs2017),不建议重新装编译器,更不建议将matlab卸载了重新安装。
因为有更简单且治标又治本的方法
2. 问题解决方法
打开matlab安装路径下的mexopts文件夹
F:\matlab2016\bin\win64\mexopts
里面有各种需要各种编译器的配置文件
找到自己编译器的相应版本!如果没有自己编译器的版本,可以去网上找了下载到这个目录下。网上找到一个大佬分享的vs2017的配置文件,
链接
.
在matlab命令窗口输入命令:
mex -setup -v
查看这个输出里面的SDK版本号自己电脑里面的是否一致,不一致的话进入.xml配置文件中改为自己电脑里面的SDK版本。
因为按照编译器的时候注册表里面就会有记录,所以一般不需要在注册表里面做任何更改!
这样下来就可以使用mex了。
参考