+文件。
命令的格式为:
mcc[-option]fun[fun2][mexfile1][mlifile]
此函数的作用是将matlab程序funm转化为c程序func或者c++程序funcpp
转化后的文件默认在当前目录中。
若M文件多于一个,那么每个文件对应转化相应的c和c++文件
若源文件包含c文件,则将它们同新生成的c文件一起编译。
一些有用的option参数解释如下:
————————————————————————————————————
c 转化为c语言文件但是不生成mex文件或者独立应用程序
d<directory> 指定生成的文件目录
G/g 进入调试状态
h 编译帮助函数,所以的m文件都将编译到mex文件或者独立应用程序
L《option》 指定目标语言为option,其中c,cpp,p分别代表c语言,c++,matlab语言
m 指定创建独立c语言应用程序的宏,作用等于‘-t-W main -L C-h-T link:exe libmmdilemlib’
M"<string>" 向MBLID或者mex教本传递string中包含的信息
o<outputfilename> 指定输出文件名
O<optimization> 指定优化参数
p 指定创建独立c++语言应用程序的宏 作用等于-t-W main -L Cpp-h-T link:exe libmmdilemlib’
v 详细显示编译步骤
x 指定创建独立mex文件的宏,作用等于-t-W main -L C-T link:exe libmmdilemlib’
S 转化为simuink的s函数
————————————————————————————————————
————————————————————————————————————
eg
现有m文件mainm mrankm,主函数main中调用了子函数mrank
mainm
function main
r=mrank(5)
mrankm
function r=mrank(n)
r=zeros(n,1);
for k=1:n
r(k)=rank(magic(k));
end
在matlab环境下执行主程序可以看到结果
》》main
r=
1
2
3
3
5
现在要把他们转化为c和cpp程序
在matlab工作窗口中输入下面命令
》》mcc-mc main mrank
可以得到下面个文件:
mainc
mainh
main-mainc
mrankc
mrankh
在matlab中输入下面命令
mcc -lcpp main mrank
可以得到下面5个文件
maincpp
mainhpp
main-maincpp
mrankcpp
mrankhpp
有了这些程序以后,就可以在其他c,c++程序中方便调用了
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
创建独立可执行程序
方法1:编译m文件为可执行程序
mcc -m main mrank
or
mcc -p main mrank
方法2:将编译的c c++转化为可执行程序
mbuild mainc main_mainc mrankc
or
mbuild maincpp main_maincpp mrankcpp
方法一:
已有guim文件和guifig文件
1
在matlab的command窗口中输入
mcc
-B
sgl
GUIm
2将上步生成的文件包括m
文件和fig文件一起考到待运行的机器,此时仍需matlab所必需的
动态连接库
。
3
将
/extern/lib/
win32
/mglinstallarexel拷贝到
1、首先将mlx文件重名为zip。
2、其次用压缩软件打开,代码会存储在matlab/documentxml文件中。
3、最后删除其中的XML标签,即可获得未损坏源码。
一般我们在编写matlab中的gui时,我们都是生成一个fig文件和一个m文件的,但是如果我们要生成独立的应用程序,就是exe程序时,最后让它把两个文件合成一个文件,这样容易生成。方法是在figure窗口中点击file下的export就行了,生成默认文件名为×_exportm文件。(比如a_exportm)
然后我们需要安装matlab complier,如果你已经安装就直接运行mcc -m a_exportm
上面的命令的默认是a_exportm在当前的工作目录下面,如果不是就拷贝过来,或者加上绝对路径就行了。
安装matlab complier的过程如下:
mbulid -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-win32 C 241 in D:\MATLAB\R2007b\sys\lcc
[0] None
Compiler:
如果你机器上有vc++之类的编译器的话,也会被列出来的,我电脑上没有,所以只有一个matlab自带的编译器,这里我们输入1,然后回车,出现如下:
Please verify your choices:
Compiler: Lcc-win32 C 241
Location: D:\MATLAB\R2007b\sys\lcc
Are these correct([y]/n):
然后输入y,表示确认就行了,出现安装成功信息,如下:
Trying to update options file: C:\Documents and Settings\FreeFly\Application Data\MathWorks\MATLAB\R2007b\compoptsbat
From template: D:\MATLAB\R2007b\bin\win32\mbuildopts\lcccomppbat
Done
PS:如果想把生成的exe程序在其他没有matlab的机子上运行,需要安装MCRInstaller,可以在matlab的安装目录里面搜索到。这样把这个安装到没有matlab的机子上,就可以运行生成的exe程序了。
1 在matlab的command窗口中输入
mcc -B sgl GUIm
2将上步生成的文件包括m 文件和fig文件一起考到待运行的机器 此时仍需matlab所必需的动态连接库。
3 将 <matlab path >/extern/lib/win32/mglinstallarexel拷贝到到待运行机器上
4在机器上先运行mglinstallarexe, 然后选择解压目录,将在指定目录下解压缩出bin和toolbox两子目录,其中在bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共有37个。可以将这些dll考入system32, 也可以直接放在应用程序目录下。而toolbox目录则必须与应用程序同一目录。 5大功告成。 >
问题原因
出现此问题是由于Windows 的system32目录下两个DLL文件版本太低,这两个文件是SSLEAY32DLL和LIBEAY32DLL。
这两个文件在MATLAB安装目录的\bin\win64目录下也有,\bin\win64这个目录是在添加到了系统的PATH变量里了的。但是Matlab编译后的exe程序在运行时,system32目录有高的优先级,会使用system32目录下的这两个文件,导致初始化错误,直接闪退。
解决方法
知道了此原因,有两种解决方法:
(1)将Matlab的安装目录 \bin\win64下的SSLEAY32DLL和LIBEAY32DLL复制到windows的system32目录下,覆盖旧版本的文件。但是这样可能导致使用这两个DLL文件的其他程序出现问题。
(2)将Matlab的安装目录 \bin\win64下的SSLEAY32DLL和LIBEAY32DLL文件复制到自己编译后的exe同目录下,这样exe文件在运行时就是找自己目录下的这两个DLL文件,而不会使用windows\system32目录下的DLL文件。
---------------------
原文:>
可以啊很简单,在命令窗口中输入mbuild -setup,选择编译器,matlab自带的lcc,如果你装的有VC,也可以选VC编译器,然后按提示 *** 作。
安装好后,输入mcc -m test_1,然后在你放文件的地方就会出现几个文件,其中一个是exe格式的。
你也可以看这个网页,里面有更多的详细内容:
>
以上就是关于matlab中的多个.m文件转化成exe文件,我用过mcc但是一次只能转换一个.m文件全部的内容,包括:matlab中的多个.m文件转化成exe文件,我用过mcc但是一次只能转换一个.m文件、如何用matlab coder 使GUI生成exe应用程序、matlab怎么恢复exe程序源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)