matlab中的多个.m文件转化成exe文件,我用过mcc但是一次只能转换一个.m文件

matlab中的多个.m文件转化成exe文件,我用过mcc但是一次只能转换一个.m文件,第1张

文件

命令的格式为:

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程序源代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9511599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存