导航:首页 > 源码编译 > matlabmexe能反编译吗

matlabmexe能反编译吗

发布时间:2023-07-29 11:21:20

1. 请教关于利用Matlab中“mex”命令编译C程序的问题

1.准备好C语言程序,清楚C语言的入口函数
2.编写mexfunction函数。mexfunction函数为C语言与MATLAB语言的接口函数。调用实例在mylinedetect.c文件中.在MATLAB中调用mex指令编译相关文件,将C语言编译为MEX文件。
3.编译完成后,生成mylinedetect.mexw32或mylinedetect.mexw64文件,此文件即mex文件,用于MATLAB与C语言接口函数.
4.编译完成之后,编写MATLAB函数,调用MEX文件。以MEX文件的形式调用编译完成的C语言函数[o1,o2]=mylinedetect(double(X).');......
5.输出结果,上述linedetect函数完成图像中直线检测功能,带入MATLAB中调用后形成结果。

2. matlab生成的dll文件怎么反编译

通常在实现图像处理的算法时我们使用Matlab编程,因为它具有丰富的库函数以及操作方便,然而在工程项目中通常使用C/C++语言。如果我们将matlab代码完全重写成C++代码会很麻烦,最好的办法是借助matlab与C/C++接口将.m程序转成dll文件!
一、使用matlab将.m转成dll文件
1、在命令行中输入mex -setup
提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 6.0 in E:\Program Files\Microsoft Visual Studio”,根据自己实际情况选择。
2、在命令行中输入mbuild -setup
这里的选项和上面类似,依次选择环境确定。
3、生成dll文件
一句命令mcc -W cpplib:add -T link:lib add.m
前面的add表示生成的dll文件名,后面的add.m顾名思义是.m文件名。生成后会多出8个文件,有用的是add.ctfadd.dll add.lib add.h4个文件,据说新版的Matlab不会生成.ctf文件。

3. matlab 把c文件 编译成mex64 文件

下面是编译步骤:
1. 设置编译器
(1)在MATLAB命令窗口中运行mex –setup,出现下列提示:
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n?

(2)选择y,MATLAB将自动搜索计算机上已安装的外部编译器的类型、版本及所在路径,并列出来让用户选择:
Select a compiler:
输入有lcc那个选项,我输入的是1
(3)让你确认选择的编译器是否正确,正确输入y,否则输入n。
2. 输入mex straight_line_integral_inner.c 没有报错则编译成功,你可以在你的项目文件夹下发现多了一个文件straight_line_integral_inner.mexw32。
这样你就可以在MATLAB中调用C代码了。
注:如果是WINDOWS系统,则生成mex32;如果是Win7则生成mex64.

4. matlab如何编译mex文件

通过MEX文件可以在MATLAB中像调用内嵌函数一样调用现有的使用C语言和Fortran等语言编写的函数,实现了代码重用,同时也能解决MATLAB循环效率低的缺点,提高MATLAB环境中数据处理的效率。
MEX文件的后缀名为 .mexw32
MEX文件的编写和编译需要两个基本条件:一是必须按照MATLAB应用程序接口组件和相关工具,二是要有C语言或Fortran语言的编译器。
需要对MATLAB系统进行设置,使MATLAB系统知道使用系统的哪一个C语言编译器,以及其参数和路径。
MEX文件系统设置:
>> mex –setup按照提示进行,最后出现Done…系统配置完毕。
C语言MEX文件的建立
C语言MEX文件的建立
1. MEX文件的结构
a) 计算子程序
b) 入口子程序,void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[]){ /*用户特定的代码….*/ }
2. 创建timestwoalt.c
#include "mex.h"
void timestwo_alt(double *y, double x)
{
*y = 2.0*x;
}
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[] )
{
double *y;
doublex;
/* 检查参数 */
if (nrhs != 1) {
mexErrMsgTxt("One input argument required.");
} else if (nlhs > 1) {
mexErrMsgTxt("Too many output arguments.");
} else if (!mxIsNumeric(prhs[0])) {
mexErrMsgTxt("Argument must be numeric.");
} else if (mxGetNumberOfElements(prhs[0]) != 1 || mxIsComplex(prhs[0])) {
mexErrMsgTxt("Argument must be non-complex scalar.");
}
/* 为输出参数创建变量 */
plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL);
/*
为参数 x、y赋值,x为值,而y为指针
(由于MATLAB没有值传递,所以用指针才能得到修改后的y值,
不然修改的是y的一个副本,为临时变量,在函数返回时,y值没有变化,
不能得到希望的结果)
*/
x = mxGetScalar(prhs[0]);
y = mxGetPr(plhs[0]);
/* 调用timestwo_alt 子函数 */
timestwo_alt(y,x);
}
3. 编译链接C语言的MEX文件源程序,在MATLAB的控制窗口中输入:mex timestwoalt.c生成一个名为timestwoalt.mexw32的MEX文件
4. 运行:在MATLAB的控制窗口中输入
x=2;
y=timestwoalt(x)
输出:y=4
MEX文件实现了一种C语言与MATLAB的接口,其实际的计算功能仍在C语言形式的计算子程序中完成,而入口子程序的功能是检查参数以匹配C语言的参数规范(how to?)。
当有C语言编写的大型程序时,不必用MATLAB语言重新编写,只要将此C语言程序作为一个计算子程序,然后编写一个入口子程序,完成参数的匹配,然后编译成MEX文件即可。
MEX文件的另外一个功能是可以将MATLAB编程中的瓶颈问题,如多重循环等,将此类费时的指令用C语言实现,然后作必要的入口子程序,编译成MEX文件,可以有效地提高MATLAB的效率。
S-函数创建器限制了C语言S-函数的功能:只能有一个输入信号和一个输出信号,而且只能处理double类型的数据!所以,可用性不大。

阅读全文

与matlabmexe能反编译吗相关的资料

热点内容
h3c光纤全工半全工设置命令 浏览:135
公司法pdf下载 浏览:379
linuxmarkdown 浏览:347
华为手机怎么多选文件夹 浏览:679
如何取消命令方块指令 浏览:345
风翼app为什么进不去了 浏览:774
im4java压缩图片 浏览:358
数据查询网站源码 浏览:146
伊克塞尔文档怎么进行加密 浏览:886
app转账是什么 浏览:159
php的基本语法 浏览:792
对外汉语pdf 浏览:516
如何用mamp本地web服务器 浏览:869
如何加密自己js代码 浏览:627
排列组合a与c的算法 浏览:534
如何在文件夹中找到同名内容 浏览:786
有什么app文字转韩文配音 浏览:372
循环宏1命令 浏览:35
斐波那契数列矩阵算法 浏览:674
公式保护后加密不了 浏览:82