mcc函数实现matlab的m文件转化为c,c++文件

本文介绍了如何使用mcc函数将MATLAB的M文件转化为C/C++文件,并提供了示例代码及命令参数解析。

 

http://polleter1.blog.163.com/blog/static/46846553200681884039519/

mcc函数实现matlab的m文件转化为c,c++文件。 

2006-09-18 08:40:39|  分类: matlab编程_c++编 |  标签: |字号 订阅

mcc函数实现matlab的m文件转化为c,c++文件。
命令的格式为:
mcc[-option]fun[fun2...][mexfile1...][mlifile...]
此函数的作用是将matlab程序fun.m转化为c程序fun.c或者c++程序fun.cpp
转化后的文件默认在当前目录中。
若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 libmmdile.mlib’
M"<string>"  向MBLID或者mex教本传递string中包含的信息
o<outputfilename>  指定输出文件名
O<optimization>  指定优化参数
p   指定创建独立c++语言应用程序的宏  作用等于-t-W main -L Cpp-h-T link:exe libmmdile.mlib’
v   详细显示编译步骤
x   指定创建独立mex文件的宏,作用等于-t-W main -L C-T link:exe libmmdile.mlib’
S   转化为simuink的s函数
————————————————————————————————————
————————————————————————————————————
eg
现有m文件main.m mrank.m,主函数main中调用了子函数mrank
main.m
function main
r=mrank(5)
mrank.m
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
可以得到下面个文件:
main.c
main.h
main-main.c
mrank.c
mrank.h
在matlab中输入下面命令
mcc -lcpp main mrank
可以得到下面5个文件
main.cpp
main.hpp
main-main.cpp
mrank.cpp
mrank.hpp
有了这些程序以后,就可以在其他c,c++程序中方便调用了

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

创建独立可执行程序

方法1:编译m文件为可执行程序

mcc -m main mrank

or

mcc -p main mrank

方法2:将编译的c c++转化为可执行程序

mbuild main.c main_main.c mrank.c

or

mbuild main.cpp main_main.cpp mrank.cpp

 

MATLAB是一种强大的数学计算软件,广泛应用于工程计算、数据分析、科学建模等领域。MCCMATLAB自带的一个编译器,主要功能是将MATLAB编写的程序转换成可独立运行的非MATLAB环境下的应用程序,如Windows下的.exe文件。这种编译后的程序可以在没有MATLAB安装的机器上运行,提高了代码的分发和部署的便利性。标题和描述提及的是如何解析使用MCC命令编译出的.exe文件。这通常涉及到以下几个方面:1. **MCC命令详解**:MCC命令是MATLAB Compiler的命令行接口,用于将MATLAB脚本、函数或工作空间变量编译成独立的应用程序。通过`mcc -m your_script.m`这样的命令,你可以把一个MATLAB脚本转换为一个可执行文件。2. **编译过程**:在编译过程中,MCC会将MATLAB代码转化为C/C++源码,然后使用编译器生成最终的.exe文件。这个过程包括了符号链接、资源编译和优化等步骤。3. **依赖库**:.exe文件运行时可能需要MATLAB Runtime库支持。这些库包含MATLAB运行环境所需的函数和数据结构,确保程序能够在没有完整MATLAB安装的系统上运行。因此,解析.exe文件时要注意识别并提供这些库。4. **文件结构**:在解压的.zip文件中,`matlab_exe_unpack-main`可能包含了编译后的主程序,而`新建文件夹`可能包含辅助文件,如资源文件、配置文件或者MATLAB Runtime库的组件。5. **反编译与调试**:解析.exe文件有时是为了了解其内部工作原理或者调试问题。这通常需要用到反汇编工具或者调试器,但需要注意的是,由于MATLAB代码被编译成低级语言,反编译的结果可能难以直接解读。6. **安全性和知识产权**:使用MCC编译的.exe文件可能会对原始MATLAB代码进行一定程度的混淆和保护,以防止未经授权的修改和反编译。不过,这并不意味着完全无法分析,只是增加了难度。7. **性能优化**:MCC编译的程序相比直接在MATLAB环境中运行,通常会有更好的性能,因为它避开了MATLAB解释器的开销。但是,某些MATLAB特性(如动态数组或某些高级数学函数)在编译后可能无法达到相同的速度。8. **部署策略**:在实际应用中,理解.exe文件的结构有助于制定有效的部署策略,比如如何打包必要的库和资源,以及如何确保目标系统满足运行要求。9. **错误处理**:如果.exe文件运行时出现问题,可能需要通过日志文件、调试器或MATLAB的编译后报告来查找原因,因为直接在MATLAB编译器中获取调试信息是困难的。解析MATLABMCC编译出的.exe文件涉及到理解编译过程、文件结构、运行依赖、反编译和调试技巧等多个方面。对于开发者来说,这既是挑战也是提升技术能力的机会。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值