GRF-KYO 发表于 2006-5-19 08:50

MATLAB程序如何实现脱离自身运行?

<P>请问具体怎么做才可以生成独立执行的exe文件。<BR>多谢!<BR></P>

gigibenny 发表于 2006-5-19 08:58

<P>同问<BR>小弟是做自组织映射(SOM)神经网络的,这几天弄毕业设计在这就卡住了<BR>通过 mcc -m命令生成的EXE文件在安装MCRINSTALL之后还是运行不出来 ,好象是说 NEWSOM 没定义 应该怎么解决呀?哪为大虾知道帮帮忙 ,谢谢了</P>

yangzj 发表于 2006-5-19 15:23

试试用matcom

GRF-KYO 发表于 2006-5-19 20:06

在建立好函数m文件(不能是脚本m文件)后,用mcc命令将其转换为C++代码,命令行参数如下(假定m文件为test.m):
mcc -t -L Cpp test.m
  然后继续生成动态链接库函数:
mcc -t -W lib:test2 -T link:lib test.m

是不是这样做就可以完全脱离MATLAB,在别的机器是运行?

是不是之前要运行 mex-setup,装编译器啊?

[ 本帖最后由 ChaChing 于 2010-5-4 21:36 编辑 ]

yshlin 发表于 2006-5-20 00:10

用mcc,也可以使用comtool.该网站有很多相关信息,自己查吧!

happy 发表于 2006-5-20 14:05

回复:(GRF-KYO)是不是之前要运行 mex-setup,装编译...

mbuild -setup

对于matlab6.5可以用下面的方法实现
先将\extern\lib\win32\ 下的mglinstaller.exe 解压缩,会得到mglarchive.exe, 再将mglarchive.exe 解压缩, 在生成的目录bin\win32\下就是程序独立运行所需要的动态链接库文件了。将这些动态链接库文件拷到你的程序所在的目录下就可以了。

7.0我也不清楚

[ 本帖最后由 ChaChing 于 2010-5-4 22:52 编辑 ]

yu1983619 发表于 2006-5-20 20:44

按照happy所说的是不是讲我的matlab程序和那些动态链接库文件拷到同一目录下就可以在一台没有安装matlab的电脑上运行 该段程序了呢<BR>可我试验了 运行不了呀<BR>请指点

siyanger 发表于 2006-5-21 07:57

回复:(yu1983619)按照happy所说的是不是讲我的matl...

这样应该就可以了啊,怎么不行呢?有什么出错提示吗?

[ 本帖最后由 ChaChing 于 2010-5-4 22:55 编辑 ]

yu1983619 发表于 2006-5-21 09:34

我按照happy所说,但不好用呀,不是按我这么理解的么,将我所编制的matlab程序 与动态链接库文件安装到同一目录下,就可以在一台没有安装 matlab的电脑上运行我的程序么
对于matlab6.5可以用下面的方法实现
先将\extern\lib\win32\ 下的mglinstaller.exe 解压缩,会得到mglarchive.exe, 再将mglarchive.exe 解压缩, 在生成的目录bin\win32\下就是程序独立运行所需要的动态链接库文件了。将这些动态链接库文件拷到你的程序所在的目录下就可以了。

7.0我也不清楚

没有什么错误提示,我就是把我的程序和那些动态链接文件拷到同一文件夹里,然后粘贴到另一台没有安装 matlab的电脑上,但打开时让我选择打开方式,那不就是打不开么,或者应该用什么打开方式我不知道么,请指点
请大家帮看下我的动态链接库文件有什么不对么,为什么运行不了呢,按 happy所说的方法

[ 本帖最后由 ChaChing 于 2010-5-4 22:59 编辑 ]

zzpp321123 发表于 2006-5-22 09:24

不知这个对大家是否有帮助:
http://forum.vibunion.com/forum/viewthread.php?tid=13746

[ 本帖最后由 eight 于 2007-2-2 23:37 编辑 ]

yu1983619 发表于 2006-5-22 18:49

回复:(GRF-KYO)MATLAB程序如何实现脱离自身运行?

我按照happy所说方法将生成的动态链接库文件拷到程序所在目录,在把装有动态链接库和程序的文件夹粘贴到另一台没有安装matlab的电脑上,但是不好用,请大家帮看看我的动态链接库文件有什么错误么,请高手指点,对我来说很重要。先谢了。

GRF-KYO 发表于 2006-5-23 15:36

<P>能帮我把这个程序弄成可以在未装MATLAB机器上独立执行吗?<BR>最好能把搞的过程也说说。。便于我们这些鸟儿理解。。。<BR><BR>function exm1153_1(flag) <BR>if nargin&lt;1;flag='startup';end %允许在无输入宗量形式下调用该函数 &lt;2&gt; <BR>if ~ischar(flag);error('flag must be character ''startup''.');end <BR>switch flag %切换控制 &lt;4&gt; <BR>case 'startup' % &lt;5&gt; <BR>clf reset % &lt;6&gt; <BR>set(gcf,'unit','normalized','position',); <BR>set(gcf,'defaultuicontrolunits','normalized'); <BR>set(gcf,'defaultuicontrolfontsize',11); <BR>set(gcf,'defaultuicontrolfontname','隶书'); <BR>set(gcf,'defaultuicontrolhorizontal','left'); <BR>set(gcf,'menubar','none'); %删除图形窗工具条 <BR>str='通过多行指令绘图的交互界面'; <BR>set(gcf,'name',str,'numbertitle','off'); %书写图形窗名 <BR>h_axes=axes('position',,'visible','off'); <BR>uicontrol(gcf,'Style','text',... %制作静态文本框 <BR>'position',,... <BR>'String','绘图指令输入框'); <BR>hedit=uicontrol(gcf,'Style','edit',... %制作可编辑文本框 &lt;19&gt; <BR>'position',,... % &lt;20&gt; <BR>'Max',2); %取2,使Max-Min&gt;1,而允许多行输入 &lt;21&gt; <BR>hpop=uicontrol(gcf,'style','popup',... %制作弹出菜单 &lt;22&gt; <BR>'position',,... % &lt;23&gt; <BR>'string','spring|summer|autumn|winter');%设置弹出框中选项名 &lt;24&gt; <BR>hlist=uicontrol(gcf,'Style','list',... %制作列表框 &lt;25&gt; <BR>'position',,... % &lt;26&gt; <BR>'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名 &lt;27&gt; <BR>'Max',2); %取2,使Max-Min&gt;1,而允许多项选择 &lt;28&gt; <BR>hpush=uicontrol(gcf,'Style','push',... %制作与列表框配用的按键 &lt;29&gt; <BR>'position',,'string','Apply'); <BR>set(hedit,'callback','exm1153_1(''set'')'); %编辑框输入引起回调 &lt;31&gt; <BR>set(hpop,'callback','exm1153_1(''set'')'); %弹出框选择引起回调 &lt;32&gt; <BR>set(hpush,'callback','exm1153_1(''set'')'); %按键引起的回调 &lt;33&gt; <BR>set(gcf,'UserData',); %向'UserData'存放图柄 &lt;34&gt; <BR>case 'set' %以下是回调函数 &lt;35&gt; <BR>H=get(gcf,'UserData'); %从'UserData'获取图柄 &lt;36&gt; <BR>ct=get(H(1),'string'); %获得输入的字符串函数 &lt;37&gt; <BR>vpop=get(H(2),'value'); %获得选项的位置标识 &lt;38&gt; <BR>vlist=get(H(3),'value'); %获得选项位置向量 &lt;39&gt; <BR>if ~isempty(ct) ;<BR>eval(ct');%运行从编辑文本框送入的指令 <BR>popstr={'spring','summer','autumn','winter'}; %弹出框色图矩阵 <BR>liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容 <BR>invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令 <BR>colormap(eval(popstr{vpop})) %采用弹出框所选色图 <BR>vv=zeros(1,4);vv(vlist)=1; <BR>for k=1:4 <BR>if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形 <BR>end <BR>end % &lt;50&gt; <BR>end <BR><BR>似乎长了点。。</P>

GRF-KYO 发表于 2006-5-23 15:53

<P>还有看了一些书上所说的把路径添加到系统目录变量(PATH)中是怎么理解啊?<BR>比如说我的程序放在E:\test这个目录中,用mcc编译后生成的东西也都放里边~<BR>是不是就是说把生成的所有文件都放到~用mglinstaller.exe生成的那两个文件加中的bin\Win32中,再把这个路径粘贴到PATH值中?那这样程序可以在未装MATLAB的机器上执行吗?</P>

GRF-KYO 发表于 2006-5-24 09:54

<P>还是请前辈们帮我看看我这样做的对不对:<BR>版本 MATLAB6.5 默认的安装路径<BR>程序:<BR>function shili01<BR>h0=figure('toolbar','none',...<BR>    'position',,...<BR>    'name','test');<BR>x=-pi:0.05:pi;<BR>y=sin(x);<BR>plot(x,y);<BR>xlabel('x');<BR>ylabel('y');<BR>title('SIN()函数曲线');<BR>grid on<BR>先运行mbuild -setup <BR>选择VC6.0<BR>然后用mcc -B sglcpp shili01 编译成C++的可执行文件<BR>在把在目录中生成的文件全部拷贝到 由 c:\matlab6p5\extern\lib\win32\mglinstaller.exe生成的bin\win32中。。<BR>再把win32这个文件夹拷贝到一台未安装MATLAB的电脑上。<BR>要想执行文件~只要双击文件夹里的shili01.exe文件就行了? <BR>如果是的话,为什么我的执行不了。也就是一下子弹出一个DOS界面就又自动关了。<BR></P>

bard217 发表于 2006-5-24 23:09

要在目的机子上安装一个MCRinstaller.exe.这个文件在matlab 的toolbox里可以找到
页: [1] 2
查看完整版本: MATLAB程序如何实现脱离自身运行?