具体步骤如下:(此方法适用于MATLAB 7.0)
1.安装C编译器(前提是你的电脑已经安装了VC)
>> mbuild -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(可执行)文件
>> mcc -m guimcc
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
>>
上面警告的解决方法:
将 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的
81行 set_param(0,'PaperType',defaultpaper);
82行 set_param(0,'PaperUnits',defaultunits);
注释掉之后,又重新编译了一次,没有警告信息出来了
3.将编译生成的文件发布到没有MATLAB的电脑上
先在 $MATLAB\toolbox\compiler\deploy\win32下找MCRInstaller.exe(76M左右)文件
然后在没有装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了。
注意事项:
编译过程中,很可能会有如下报错
>> mcc -m interface
To get started, select MATLAB Help or Demos from the Help menu.
??? Unable to locate close;contentwindow as a function on the MATLAB path
Warning: An object instance still exists.
Use the objectdirectory command to see a count of existing instances.
??? Depfun error: 'Unable to locate close;contentwindow as a function on the MATLAB path'
>>
这种情况是因为我将“close;contentwindow”语句写在按钮控件属性的“callback”里面了
{但是如果只是单个语句的话,是可行的(比如:只有contentwindow)}
此时,只要将“close;contentwindow”语句写在M文件中按钮的“callback”里,再编译就不会出错了
2008年9月23日星期二
matlab编译问题
我是在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文件即可。
将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文件即可。
订阅:
博文 (Atom)