一、环境配置
Matlab是不能直接编译Cpp文件的,需要借助计算机上已有的编译器。我的Matlab版本是R2016a,计算机上安装的是VS2017社区版。首先要确保matlab能够找到VS2017的编译器,在命令行窗口输入mex -setup
,之后提示:
错误使用 mex
未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访问
出现这个原因是,在/bin/win64/mexopts文件夹下,没有VS2017的配置文件(有vs2010、2012、2013、2015的,估计Matlab2016发行的时候还没有VS2017,  ̄□ ̄||)。需要我们下载msvc2017.xml和mscvcpp2017.xml两个配置文件并放到mexopts文件夹下,然后重新输入mex -setup
,然后单击提示出来的mex -setup C++
,就在Matlab里配置好C++编译器了。
两个配置文件的下载地址如下:https://download.csdn.net/download/dashumak/10900255
二、mex编译cpp文件
比如我要编译的是Initialization.cpp
文件,就在命令窗口中输入mex Initialization.cpp
。但是,提示我。这是因为Initialization.cpp调用了一个Interface.dll
库,但是那是个32位的库。但是64的Matlab不能编译生成32位的mex,更不能调用32的mex。所以唯一的解决办法是重新安装一个32位的Matlab(o(╥﹏╥)o)。
错误使用 mex
Interface.lib(Interface.dll) : fatal error LNK1112: 模块计算机类型“x86”与目标计算机类型“x64”冲突