cmatlab混合编程调试,64位MATLAB和C混合编程以及联合调
试
【环境说明】
电脑操作系统:win 7 旗舰版,64位
MATLAB版本:R2013b
VS版本:Microsoft Visual Studio 2010
【操作说明】
1、在原来⼯程的基础上添加下列内容:
#include "mex.h"
//添加库⽂件
#pragma comment(lib,"libmx.lib")
#pragma comment(lib,"libmex.lib")
#pragma comment(lib,"libmat.lib")
//下⾯这个是MATLAB和C进⾏通信的函数
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{//注意:nrhs代表的是输⼊变量的多少,⽽不是⼀个变量维数的⼤⼩//定义⼀个double类型的数组
unsigned int *outData;double test_data[223];double test_data_out[512];
unsignedint data_in[223];double *real_data_ptr;double *real_data_ptr_out;intloop_XDZ;
unsignedintback_length_my;
outData=chk_alloc(512, sizeof *outData);//初始化分配内存空间的过程
real_data_ptr_out=mxCalloc(514, sizeof(char)); //申请空间
real_data_ptr=mxGetPr(prhs[0]);
plhs[0] = mxCreateDoubleMatrix(1,512,mxREAL); //让第⼀个输出参数指向⼀个1*1的矩阵
real_data_ptr_out=mxGetPr(plhs[0]); //获得矩阵的第⼀个元素的指针
for (loop_XDZ=0;loop_XDZ<223;loop_XDZ++) //循环获取编码之前的数据源
{
test_data[loop_XDZ]=*real_data_ptr++;
data_in[loop_XDZ]=(unsigned int)test_data[loop_XDZ];
}
back_length_my= DCW_LDPCencode_packaged(data_in,outData,223,0);//最后⼀个参数是控制加扰与否的选项//下⾯是需要把数据送到外⾯去
for (loop_XDZ=0;loop_XDZ<511;loop_XDZ++) //循环获取编码之前的数据源
{
test_data_out[loop_XDZ]=(double)outData[loop_XDZ];*real_data_ptr_out++=test_data_out[loop_XDZ];
}return;
}
在上⾯的函数中,我调⽤了⼯程的顶层模块DCW_LDPCencode_packaged,这个模块实现的主要功能是,输⼊⼀定长度的数据,输出⼀定长度的信息。
2、配置VS⼯程属性
在常规选项卡中,把⽂件的扩展名设置为.mexw64;
在VC++⽬录选项卡当中,更改包含⽬录为\MATLAB\extern\include⽂件夹;
在VC++⽬录选项卡当中,更改库⽬录为\MATLAB\extern\lib\win64\microsoft;
在链接器-输⼊选项卡当中,添加附加依赖项libmat.lib、libeng.lib、libmx.lib、libmex.lib;
在下⾯的模块定义⽂件中,设置为test.tdf(这个⽂件需要⾃⼰创建);
【特别补充】在链接器->常规 界⾯上,需要修改输出⽂件的形式,否则⽆法正常⽣成mexw64⽂件
新建⽂本⽂档,更改名称为test.tdf。⽤⽂本编辑软件打开⽂件,更改其中的内容为:
LIBRARY DCW_Packaged_RS_LDPC_encode_decode(这个是⼯程的名称,不是顶层名称)EXPORTS mexFunction 最后更改配置管理器,将项⽬改成x64属性,沿⽤win32的⼯程配置。
3、MATLAB⽂件
vs编程软件out_data=DCW_Packaged_RS_LDPC_encode_decode(enc_data,len_sel,scramble_en);
在MATLAB中写上⾯这⼀句就可以完成调⽤的过程。DCW_Packaged_RS_LDPC_encode_decode是⼯程的名字,也是.mexw64⽂件的名字。左边是输出的参数,右边是输⼊的控制参数。
4、编译⼯程,进⾏连接
右键点击VS⼯程的名字,选择 ⽣成。发现⼯程的x64->Debug⽂件夹下⾯会⽣成⼀个后缀为.mexw64的⽂件。
更改MATLAB的⼯作⽬录为x64->Debug⽂件夹(就是.mexw64所在的⽂件夹)。
在VS中选择 调试 选项卡,选择 附加到进程…… 选项,选择,并且在VS中设置断点。
运⾏MATLAB程序,即可在VS中触发断点进⾏联合调试。
【参考⽂献】
值得参考的⽂献⽹址:
在64位的系统中,⾮常实⽤的参考⽂章:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论