Matlab R2014a mex 使用vs2017编译器,及 mex命令编译C++文件报错:mexfilerequiredapiversion解决方案
在matlab 2014Ra下使用vs2017编译器编译C++文件为matlab可执行程序,本身matlab 2014Ra,是不支持vs2017编译器的,但是只要把 配置xml文件msvcpp2017、msvc2017放入至matlab的C:\Program Files\MATLAB\R2014a\bin\win64\mexopts目录下,在运行mex -setup即可实现通过matlab 2014Ra,使用vs2017的编译器,编译c++文件。
其中msvcpp2017、msvc2017下载地址(https://download.csdn.net/download/probloys/10765135)
虽然matlab mex 安装成功,但是在实际使用中遇到三个问题,
问题1:使用mex 命令无法找到window sdk,我所需要的window sdk7.1 for win7,这个在百度上搜索进入官网下载,很容易,安装出现失败,是之前版本的window sdk未卸载干净,卸载干净即可。
问题2:sdk 安装成功后,matlab mex命令一直报错mexfilerequiredapiversion,这个问题一直困扰了我一天,墙外墙内,翻遍了也没有找到解决方案,最后还是怀疑到配置文件。
在C:\Users\chenjingcheng\AppData\Roaming\MathWorks\MATLAB\R2014a有两个xml配置文件分别为, mex_C++_win64、mex_C_win64,这两个文件功能我目前也不太清楚,但是在这两个xml文件中找到了mexfilerequiredapiversion这个标签,我把这个标签极其后面的值删除了就ok了(提示:修改前请先备份下,怕万一解决不了问题)。下图是删完之后的对应行
问题3:编译成功之后,matlab运行调用,报缺少相应的组件,使用depends软件分析编译后的文件,需要哪些dll文件,拷贝至相同目录下即可