matlab7 fig exe 阴影,Matlab 生成完全独立运行的 EXE文件的问题请教

25681a33ffb74aaa162a274d89ca8119.png

如何将matlab gui文件编辑成exe可执行文件

我现在用Matlab M文件写了一个计算程序,当输入一些数时,通过程序,计算出一些结果。(比如我的

程序是sum=(a+b+c)/d,即给定a,b,c,d后,通过计算,得到sum 值)

现在我希望设计一个界面(用GUI),得到a,b,c,d的输入框,输入后,点击“计算”按钮,在结果显示区

得到sum的值

现在我想让这个小的计算界面能够成为一个独立运行的EXE文件, 在没有安装matlab的电脑上就可以运

行,请问这个问题如何实现呢?谢谢各位帮忙指点一下

zhangccb 发表于 2008-12-30 13:54

我也想知道这个问题

之前听人说过,没有装matlab的电脑上,可以装一个什么插件就能运行matlab的程序,不过那个插件

也有一、两百M的,晕~

ljelly 发表于 2008-12-30 14:14

可以用mcc 函数将编译成脱离matlab环境执行的exe 文件

m文件变成这种形式还是比较简单,如:

Make a stand-alone C executable for myfun.m:

mcc -m myfun

但做GUI的可能会有一点问题

没细致的去研究,你可以自己尝试一个简单的GUI程序

dchen 发表于 2008-12-30 15:08

1: 用deploytool 生成你需要设计的GUI;

2: 在生成的 m文件的回调函数中添加你要得功能,如sum;

3: mbuild -setup选择好编译器;

4: mcc -m xx.m直接生成.exe文件。

5: 在没有MATLAB的机器上安装MCR - matlab compiler runtime, 注意一定要版本一致;

6: 添加MCR 路径在环境变量中

你就可以用了。

hackersun 发表于 2008-12-31 09:45

hackersun 发表于 2008-12-31 09:45 基于MATLAB2008B与VS 2003生成独立可执行的程序

如何将 MATLAB 程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装

MATLAB的电脑上?下面将一步步实现:

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

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

实现。

2、设置编译器。在matlab 命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。

3、调用编译器。此处使用 MATLAB 下的一个 GUI 平台 deploytool 下完全实现。在命令窗口输入

deploytool 即可看到。具体使用方法请Help。

当然,也可以输入mcc -m filaname, filaname为要转成exe 的m文件;

注: 在以前的版本中, 用编译命令mcc -B sglcpp filaname; 自2006的版本后, 替换为mcc -mfilaname;

4、安装\toolbox\compiler\deploy\win32目录下的MCRInstaller。

二、脱离matlab运行可执行程序

MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe 文件,MCR版本

也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如

下:

\toolbox\compiler\deploy\win32

文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。

在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。

在其它没有安装matlab的机器上运行exe文件前:

首先安装matlab的运行环境。 在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。

其次是要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常

是自动加载。

如果没有,也可手动安装,添加的方法是:

右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。

注:在安装过程中会弹出让安装Microsoft.NETFramework可以不用安装。

最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。

问题:目前此方法可完全运行在没有安装 MATLAB 以及 C/C++的电脑上,但是如果是在 AMD 的 CPU

可以运行,但是不会出现任何MATLAB编译的界面。

美中不足就是,运行的时候dos的那个黑色地窗口一直存在。 如何将gui生成exe

方法一:

已有gui.m文件和gui.fig文件

1 在matlab的command窗口中输入

mcc -B sgl GUI.m

2.将上步生成的文件包括*m 文件和*.fig文件一起考到待运行的机器

此时仍需matlab所必需的动态连接库。

3. 将 /extern/lib/win32/mglinstallar.exel拷贝到到待运行机器上

4.在机器上先运行mglinstallar.exe, 然后选择解压目录,将在将在指定目录下解压缩出bin和toolbox

两个子目录,

其中在bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共

有37个。可以将这些.dll考入system32, 也可以直接放在应用程序目录下。

而toolbox目录则必须与应用程序同一目录。

方法二:

matlab编程很方便,强大的矩阵运算功能,很多好用的工具箱,但是一般程序都要在matlab环境中运行,

能否脱离这个环境打包发布呢,matlab也提供了这样的工具。

1. 转化为c/c++程序并编译为.exe

先验证mcc是否可用,用matlab中的example验证即可

建议不用matlab默认的lcc 编译器(可能有问题),可使用VC6编译器(按默认路径安装)

由于带有界面,需要图像库支持,编译时应使用命令: mcc -B sglcpp pressure

编译生成若干c/c++源码,以及.exe文件、bin目录中figure菜单条/工具条文件(.fig)等

程序发布需要.exe、bin\、.fig

2. 在未装matlab的电脑上运行程序需要数学运行时库、图像运行时库以及用到的工具箱mex文件

前两者已经在\matlab\extern\lib\win32mglinstaller.exe压缩包中,将其解压,并在环境变量path中

添加解压到的路径

另外若程序中还用到其他工具箱的东西, 那么需要将此工具箱中需要的mex文件也一并放在解压到的路径,

子文件夹位置与matlab中的位置相同

3. 在确保.exe程序可以运行的情况下 可以用setup factory打包发布

以下通过注册表自动添加path路径

%--------------------------------------------------------------------------------------

Screen.Next(); -- 进入下一个屏幕

resultDialog = Dialog.Message("注意", "向环境变量中加入matlab数学库及图象库的安装路径?",

MB_YESNO, MB_ICONINFORMATION, MB_DEFBUTTON1);

if (resultDialog == IDYES) then --加入安装路径

strPath = Registry.Get(HKEY_CURRENT_USER, "Environment", "path", true);

if strPath ~= "" then    strPath = String.Concat(strPath, ";");

end

strPathToAdd = SessionVar.Expand("%AppFolder%");

strPathToAdd = String.Concat(strPathToAdd,"//MATLAB6p5//bin//win32");

-- 如果路径中无该位置,则加入

if String.Find(strPath,strPathToAdd) == -1 then

strPath = String.Concat(strPath, strPathToAdd);

Registry.Set(HKEY_CURRENT_USER, "Environment", "path", strPath, REG_SZ);

end

end

%--------------------------------------------------------------------------------------

方法三:

在网上搜了一个方法,还没有用过, 贴在这里仅供参考:

一、 完全可以,而且生成的.exe文件可以在没有安装matlab的机器上使用,方法吗---

首先,使用mcc编译得到.exe文件,具体参数见帮助文件;

其次,将.exe文件及相关资源文件以及一个称为mglinstaller.exe的软件包一起拷到别的机器上,运行

mglinstaller.exe,并添加环境变量path,即可执行.exe文件

第三,在MATLAB环境,执行命令

mcc   -m   -B    sgl   file.m

或者      mcc -p   -B   sglcpp   file.m

请键入help   mcc看帮助。

mcc是在“command    windows”    用的吗?

只要“mglinstaller.exe”,与.exe文件及相关资源文件就可以了吗.

还有“添加环境变量path”是path到.exe文件的环境中是吧?

二、 在matlab下的workspace里打comtool,点file-open project将我们先前建好的comtest.cbl工

程文件打开,再点component--package component就实现了打包,此时到comtest\distrib文件夹里看,

生成的comtest.exe就是打包后的解压程序,双击它会解压出一些文件,再点击解压出来的_install.bat

就可以实现安装

三、 如何将gui生成exe ?

已有gui.m文件和gui.fig文件

1 在matlab的command窗口中输入

mcc -B sgl GUI.m

2.将上步生成的文件包括*m 文件和*.fig文件一起考到待运行的机器

此时仍需matlab所必需的动态连接库。

3. 将 /extern/lib/win32/mglinstallar.exel拷贝到到待运行机器上

4.在机器上先运行mglinstallar.exe, 然后选择解压目录,将在指定目录下解压缩出bin和toolbox两子

目录, 其中在bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库, 共有37个。

可以将这些.dll考入system32, 也可以直接放在应用程序目录下。 而toolbox目录则必须与应用程序同一

目录。

5.大功告成。 1.安装 C编译器(前提是你的电脑已经安装了 VC)

>> mbuild -setup

%注意:'-'的后面紧跟 setup

Please choose your compiler for building standalone MATLAB applications:

Would you like mbuild to locate installed compilers [y]/n? y

Select a compiler:

[1] Lcc C version 2.4 in D:\MATLAB7\sys\lcc

[2] Microsoft Visual C/C++ version 6.0 in D:\Microsoft Visual Studio

[0] None

Compiler: 2

Please verify your choices:

Compiler: Microsoft Visual C/C++ 6.0

Location: D:\Microsoft Visual Studio

Are these correct?([y]/n): y

Try to update options file: C:\Documents and Settings\Leki\Application

Data\MathWorks\MATLAB\R14\compopts.bat

From template: D:\MATLAB7\BIN\WIN32\mbuildopts\msvc60compp.bat

Done . . .

--> "D:\MATLAB7\bin\win32\mwregsvr D:\MATLAB7\bin\win32\mwcomutil.dll"

DllRegisterServer in D:\MATLAB7\bin\win32\mwcomutil.dll succeeded

--> "D:\MATLAB7\bin\win32\mwregsvr D:\MATLAB7\bin\win32\mwcommgr.dll"

DllRegisterServer in D:\MATLAB7\bin\win32\mwcommgr.dll succeeded

2.在 MATLAB 中,将 M文件编译成 exe(可执行)文件

定位于包含 meun.m,meun.fig 的文件路径下。在command windows下输入:

>> mcc -m meun.m

To get started, select MATLAB Help or Demos from the Help menu.

Warning: No matching builtin function available for

D:\MATLAB7\toolbox\simulink\simulink\set_param.bi

>>

这里出现了上面警告 Warning  其解决方法如下:

将 \MATLAB7\toolbox\compiler\deploy\matlabrc.m中的  81 行 set_param(0,'PaperType',defaultpaper);

82 行 set_param(0,'PaperUnits',defaultunits);

用’%‘注释掉之后,全部选中重新编译了一次,然后重新启动 matlab就没有警告信息。

这里的警告将它除去后,再编译 exe 文件就通过了。

3.将编译生成的文件发布到没有 MATLAB 的电脑上

首先,在 MATLAB\toolbox\compiler\deploy\win32下找 MCRInstaller.exe文件

然后, 在没有装MATLAB的机子上安装MCRInstaller到D:\MATLAB Component Runtime。

(目录中,最好不要有空格,如用 D:\MCR 就可以了)

再接着,设置环境变量,右键点击“我的电脑”-》属性-》高级-》环境变量-》新建

变量名:Path

变量值:D:\MCR\v70\runtime\win32

再然后,运行 exe 文件,每次都是出现 DOS 界面后,几秒钟就自动关闭了

GUI 界面一次都运行不出来,也没有错误信息提示

解决办法:

{因为 MATLAB 需要用到处理器的数学运算部分(MATLAB 默认用的是 INTEL 的数学处理

单元),故需要设置一下 BLAS(Basic Linear Algebra Subroutines,就是"基础线性几何子程序"的

意思)环境变量.首先请确认你的MATLAB的文件夹中有如下文件:atlas_Athlon.dll(AMD系列

的请用这个), atlas_P4.dll(P4 的用这个),atlas_PIII.dll(P3 的用这个),atlas_PII.dll(P2 的用

这个),这些是对应处理器的数值运算优化文件 }

先找到 $MATLAB7\bin\win32目录下的atlas_Athlon.dll (AMD系列CPU使用) 和atlas_P4.dll

(奔 4 用)文件,放到 MCR 目录中(随便),然后设置环境变量

变量名:BLAS_VERSION

变量值:D:\MCR\v70\atlas_Athlon.dll

这样设置以后,再运行 exe 文件就 OK了。

后来运行exe时出现 Warning: C:\Program Files\MathWorks\MATLAB Component

Runtime\v70\toolbox\local\pathdef.m not found.

Toolbox Path Cache is not being used. Type 'help toolbox_path_cache' for more info.

mathworks中解决方法: Note that this is a benign warning message and should not affect the compilation or  execution of the program.

One way to work around this issue is to create a blank pathdef.m and place it in the directory

$MCR\toolbox\local\    where $MCR is the directory where the MATLAB Component Runtime (MCR) has

been installed on your system.

‘一种解决此问题的方法是创建一个空 pathdef.m并将其放置在目录$MCR\toolbox\local\   中, 其中$ MCR

目录是安装MATLAB(MCR)时的路径下’

Another way to workaround this issue is to create a new copy of startup.m and disable warning messages

as follows:

warning off

Ensure that the startup.m file is on the MATLAB path.

注意:在作出上述修改后要重新编译文件。

4.去除独立可执行程序运行时的“DOS 黑窗口”。

以上生成的 exe 程序运行时首先弹出一个 DOS 界面窗口,如果不需要其输出数据和错误信息,

可将其去除。

matlba命令行输入:

cd(prefdir)

edit compopts.bat

此时 compopts.bat打开,在文件最后添加:

set LINKFLAGS=%LINKFLAGS% -subsystem windows

如果程序比较复杂,易出现异常,则不建议去除这个dos 窗口以便调试。

matlab GUI程序转换成exe可执行文件

1.设置编译器:

在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法

是在Matlab命令窗口输入:

mbuild –setup, 按提示选择matlab自带编译器LCC。

2.将脚本编译为可执行文件:

如项目文件包含:gui.m, gui.gif, fun1.m。

在此路径下命令行输入:mcc –m gui.m,生 成:mccExcludedFiles.log,

ReadMe.txt,gui.ctf,gui.prj,gui_main.c,gui_mcc_component_data.c,

gui.exe。其中:gui.ctf,gui.exe为脱离matlab环境运行必需的文件。

3.在未安装matlab的机器上运行可执行程序。

将R2 2007b\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该

计算机上,将生成可执行程序脱离matlab运行所需的函数库。

将2中生成的gui.ctf,gui.exe拷贝到该计算机同一路径。运行gui.exe将生

成gui_mcr文件夹,包含程序运行所需的库。至此完成。

4.去除独立可执行程序运行时的“DOS黑窗口”。

以上生成的exe程序运行时首先弹出一个DOS界面窗口, 如果不需要其输出数据

和错误信息,可将其去除。

matlba命令行输入:

cd(prefdir)

edit compopts.bat

此时compopts.bat打开,在文件最后添加:

set LINKFLAGS=%LINKFLAGS% -subsystem windows

如果程序比较复杂,易出现异常,则不建议去除这个dos窗口以便调试。

另外,这个办法是适用于你用的编译器为LCC,如果是其他的,那么所加语句有

所不同

Microsoft Visual C/C++:

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

Borland:

set LINKFLAGS=%LINKFLAGS% -aa

5.遇到某些函数不能使用的问题。

我的程序中用到vpa函数,运行gui.exe出现:undefined method or function

'vpa' for input argument type of 'double'错误提示。而gui.m脚本在matlab

环境可以运行。

原因:百度搜到的信息为:matlab不支持符号工具箱的编译。只好避开使用此

函数。 已有gui.m文件和gui.fig文件

在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法

是在Matlab命令窗口输入:

Mbuild –setup, 按提示选择matlab自带编译器LCC。

1.在matlab的command窗口中输入

mcc -B sgl GUI.m

2.将上步生成的文件包括*m 文件和*.fig文件一起考到待运行的机器

此时仍需matlab所必需的动态连接库。

3. 将 /extern/lib/win32/mglinstallar.exel拷贝到到待运行

机器上,; ;如果是7.0以上版本,应该是MCRInstaller.exe,路径:

path>\toolbox\compiler\deploy\win32\MCRInstaller.exe  (用buildmcr生成

MCRInstaller的压缩文件)

4.在机器上先运mglinstallar.exe(MCRInstaller.exe), 然后选择解压目录,

将在将在指定目录下解压缩出bin和toolbox两个子目录,

其中在bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态

连接库,共有37个。可以将这些.dll考入system32, 也可以直接放在应用程序

目录下。

而toolbox目录则必须与应用程序同一目录。

4.去除独立可执行程序运行时的“DOS黑窗口”。

以上生成的exe程序运行时首先弹出一个DOS界面窗口, 如果不需要其输出数据

和错误信息,可将其去除。16334

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值