注册 登录
编程论坛 Matlab

有没有成功将matlab7的m文件编译成exe文件,在没有安装matlab的电脑上成功?

huruigege 发布于 2007-11-07 15:37, 4372 次点击
我尝试很多次,没有成功,exe文件在自己电脑上可以运行,但是在别人的电脑上,安装了MCRinstaller后还是不能运行,出现tuntime的错误。

有人有成功的经验可以借鉴的吗?谢谢。

12 回复
#2
huruigege2007-11-07 15:39
https://bbs.bc-cn.net/viewthread.php?tid=149780&star=at#

这是一个成功的例子,但是我按照它的方法运行,出现了runtime的错误,就算是一个很小的加法运算的程序。
#3
zhixl2007-11-08 12:09
matlab7.0有bug,
解决方法有两个基本点,一个是手动修复bug,一个是生级到7.0以后版本
#4
zhixl2007-11-08 12:10
我的私服上有如何修复bug的方法
http://125.54.15.222/Download_C.html
#5
huruigege2007-11-08 16:05
是有bug啊?我打不开您所说的网页。请问可以提供吗?或者发到我的邮箱:hurui_dl@
#6
尘埃1222007-11-08 18:43

我是在7.1下生成的exe文件,能在未安装MATLAB的机器上成功运行,你可以参考


将M文件编译为独立可执行文件的语法是:

>>mcc –m fun1.m fun2.m…..

其中fun1就是最后的可执行文件的名称。

另外,也可通过采用命令开关-o指定编译最终目标文件的名称,如 mcc –m main.m –o mrank_main,就是将编译后的文件指定为mrank_main.exe。

编译后的生成文件根据编译器的版本不同而不同。具体的可参阅相关资料。

如果要在没有安装matlab的计算机上执行编译后的程序,首先要将\MATLAB701\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该计算机上(7.0以前的版本是mglinstaller.exe)。

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

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

第三步是将编译生成的相相关文件拷贝到同一目录下(当然其他目录亦可)。

第四步是打开MS-dos操作窗口,进入到编译后的*.exe程序所在的目录,执行编译生成的*.exe文件即可。


希望对你有帮助

#7
huruigege2007-11-09 07:53
楼上所说的方法我尝试过,我的版本是7.0结果不能运行,我怀疑是matlab本身的问题,上面就有人说了存在bug。

对于编译的方法,我看了matlab的帮助,我所执行的步骤应该是正确的。

[此贴子已经被作者于2007-11-9 7:53:30编辑过]

#8
zhixl2007-11-13 09:16
我儿子调皮,不小心把我的服务器电源碰掉了,现在我重新启动了服务部器,你再试试看.
另外,我住在国外,你必须能登录外网才可以
#9
ansonjimli2007-11-14 15:40
回复:(zhixl)我儿子调皮,不小心把我的服务器电源碰...
如果主程序中调用了其它的工具箱,编译成exe程序后,是不是在其它机子上运行的时候,要把工具箱也拷贝过去了?
#10
zhixl2007-11-15 07:54
修复matlab7.0.x的bug的方法
1. 打开MATLAB 7
2. 请在MATLAB command Window里执行下列Command
>> cd('c:/MATLAB7/toolbox/compiler/deploy')
>> edit matlabrc
3. 请修改Line 81~82
原为
set_param(0,'PaperType',defaultpaper);
set_param(0,'PaperUnits',defaultunits);
改成为
% set_param(0,'PaperType',defaultpaper);
% set_param(0,'PaperUnits',defaultunits);
4. 请在MATLAB command Window里执行下列Command
>> rehash toolboxcache
5. 重新启动MATLAB
#11
zhixl2007-11-15 07:57
以下是引用ansonjimli在2007-11-14 15:40:13的发言:
如果主程序中调用了其它的工具箱,编译成exe程序后,是不是在其它机子上运行的时候,要把工具箱也拷贝过去了?

如果调用了*.dll文件,就需要copy过去,否则的话,不需要copy

#12
huruigege2007-11-21 11:32
谢谢指点,我已经修复该bug。
#13
zybavy2008-11-02 11:23
谢谢搂住!
1