matlab 设置编译器遇到的问题及解决办法(mex mbuild命令)

本人毕设使用MATLAB做gui并想要打包程序,在设置编译器的手遇到了许多问题。一番周折后终于解决了。以下为解决办法。


首先,很多人在安装MATLAB时可能会忽略过程中的提示(如下图),我也是n次重装后才注意到这个

matlab 设置编译器遇到的问题及解决办法(mex mbuild命令)_第1张图片

那么就需要自行安装各种东西了,点击“支持的编译器”后官网的一个界面会显示各个版本MATLAB及支持的编译器等信息,我安装的是2016a版本,点击detail后

会有如下提示:matlab 设置编译器遇到的问题及解决办法(mex mbuild命令)_第2张图片

所以必须看清楚每个版本支持的编译器和sdk,MATLAB 2016a 需要下载windows sdk7.1,另外编译器我使用的是TDM -gcc

先来说编译器,这个直接百度就可以,下载后需要配置环境变量,

附官网链接https://ww2.mathworks.cn/matlabcentral/answers/313298-i-already-have-mingw-on-my-computer-how-do-i-configure-it-to-work-with-matlab

方法简单来说就是:(1)右键我的电脑->属性->高级系统设置->环境变量

                              (2)添加系统变量,命名为MW_MINGW64_LOC,键值设置为编译器安装路径,如'C:\TDM-GCC-64'点击确定

                                    (3)打开MATLAB,输入setenv('MW_MINGW64_LOC','Location') Location为安装路径(注意每次重启后都要输入此命令)

编译器就配置好了,可以输入mex -setup 检测下是否能找到编译器。

编译器安装好以后需要安装windows sdk7.1 及对应.netframe work 4.0(取决于matlab 版本)

安装sdk时会提示你需要安装.netframe work 4.0,不安装4.0会少安装几个组件,这显然是不行的。然后我就傻傻的去安装4.0结果告诉我已经有更高版本的.netframe work安装不了4.0就这个纠结了好长时间

然后解决方法是修改注册表键值,不需要安装4.0。注意修改完键值后记得改回来,具体方法如下:

打开regedit(注册表编辑器)按照以下路径找到对应注册表

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\NET Framework Setup\NDP\v4

需要对里面的Client 和Full 的value进行修改。这个时候还会因为权限不足产生错误提示

解决方法如下:

在Client上(Full也需要设置)右键点击权限,点击高级,然后点击添加之后选择主体这里没有我们对应的用户

需要再点击高级然后立即查找,搜索结果里找到自己的用户名例如“win10”。之后点击确定回到Client的高级安全设置

这里注意要先点击“应用”然后再确定才能修改成功。到此权限修改成功。

之后要将Client 和Full的Value 由高版本改成4.0.30319。两个都改完以后就可以继续安装SDK 7.1了

安装完SDK以后可以在matlab 命令行里输入mbuild -setup 能找到sdk


之后如果要打包成独立的exe文件的话可以使用matlab 应用程序里的application compiler或者百度deploy tool


除了这些以外我还装了一些东西,但是不知道是不是必须的,例如安装JAVA jdk然后配置java的环境变量

如果之前的方法还有问题的话,就装下java试试吧。做这些一定要注意不同版本的兼容性。希望读者能够少走些弯路吧

你可能感兴趣的:(MATLAB)