一、环境配置
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.youkuaiyun.com/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”冲突
本文详细介绍了如何在Matlab R2016a中配置Visual Studio 2017作为C++编译器,解决因默认配置缺失导致的编译错误。同时,探讨了64位Matlab环境下编译32位DLL库所遇到的问题及解决方案。
3459

被折叠的 条评论
为什么被折叠?



