加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab(.m)文件生成windows可执行(.exe)文件以及MATLAB生成exe脱离matlab运行可执行程序

(2018-06-04 17:51:21)
分类: matlab
  • mex -setup:设置 C 语言编译器;(如果本地安装有 visual studio 20xx 集成开发环境,则会自动选择其下的 C/C++ 编译器 )

  • 将运行时环境(runtime environment)所需要的动态链接库(.dll)添加进系统环境变量(Path)(如果未设置该环境变量,则在执行编译好的可执行文件时,可能会提示Could not find version x.x of the MATLAB runtime. Attempting to load mclmcrrtx_x.dll的问题),比如对于安装在 D 盘的 matlab 2016,动态链接库所在的路径为;

    
    D:\Program Files\MATLAB\R2016b\runtime\win64
    
    • 1
  • 调用编译器,编译待转化为 exe 格式的 .m 文件

    
    >> mcc -m xx.m
            % 这样就会在本地生成一个 xx.exe 的文件;
            % 编译时会自动链接 xx.m 程序中所需的函数及库的依赖,还需 \toolbox\compiler\deploy\win64 下的 MCRInstaller.exe
    
  • 如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?下面将一步步实现:

     

    一、生成独立可执行的程序(exe文件)步骤


    1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS2010实现。

    2、设置编译器。

    在matlab命令行输入mbuild  –setup以及mex –setup,选择安装的c编译器(可能会选1也可能选0,这个要看你显示的是什么)。选择y  一直到done

    3、调用编译器。

    当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件,例如你的名字是im.m文件,那么fileaname就用im替换

     

    二、脱离matlab运行可执行程序(换一个电脑运行exe)


         MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:

    \toolbox\compiler\deploy\win64

    文件名为MCRInstaller.exe。

    步骤:

    (一)先把这个安装在新电脑上

    (二)然后配置环境

    右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将路径C:\Program Files\MATLAB\MATLAB Compiler Runtime\v80\runtime\win64复制到里面就可以了。

     

    三、运行exe,黑屏一闪


         美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:

    消除运行MATLAB生成的exe程序的dos黑屏的办法

    基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:

    方法: 在命令窗口输入:

    cd(prefdir)

    edit compopts.bat

    在打开的文件最后添加以下语句(添加哪个要看你的电脑):

    A.VC环境下(我的是添加这个因为是vs2010):

    set LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS/ENTRY:mainCRTStartup

    B.LCC环境下:

    set LINKFLAGS=%LINKFLAGS% -subsystemwindows

    C. Borland:

    set LINKFLAGS=%LINKFLAGS% -aa

    保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了

    这个方法在使用后生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有