【环境说明】

电脑操作系统: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[];
double test_data_out[];
unsigned int data_in[];
double *real_data_ptr;
double *real_data_ptr_out;
int loop_XDZ;
unsigned int back_length_my;
outData=chk_alloc(, sizeof *outData);//初始化分配内存空间的过程
real_data_ptr_out=mxCalloc(, sizeof(char)); //申请空间
real_data_ptr=mxGetPr(prhs[]);
plhs[] = mxCreateDoubleMatrix(,,mxREAL); //让第一个输出参数指向一个1*1的矩阵
real_data_ptr_out=mxGetPr(plhs[]); //获得矩阵的第一个元素的指针
for (loop_XDZ=;loop_XDZ<;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,,);//最后一个参数是控制加扰与否的选项
//下面是需要把数据送到外面去
for (loop_XDZ=;loop_XDZ<;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文件

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中选择 调试 选项卡,选择 附加到进程…… 选项,选择MATLAB.exe,并且在VS中设置断点。

运行MATLAB程序,即可在VS中触发断点进行联合调试。

【参考文献】

值得参考的文献网址:

1、https://www.cnblogs.com/sea-wind/p/5712479.html

2、http://www.cnblogs.com/tjulxh/archive/2012/04/23/2467087.html

在64位的系统中,非常实用的参考文章:

http://blog.sciencenet.cn/blog-568124-757193.html

最新文章

  1. redis五种数据类型的使用(zz)
  2. 原创最简单的ORM例子
  3. 【STL】-priority_queue的用法
  4. 异步导出excel
  5. Heritrix源码分析(二) 配置文件order.xml介绍(转)
  6. 毕业设计--天气预报App
  7. 根据block取出页号buf_block_get_page_no
  8. nginx常用配置系列-HTTPS配置
  9. gitlab服务器搭建教程
  10. ES6中var/let/const的区别
  11. Linux:一位猫奴的意外逆袭
  12. 自适应Simpson法与积分初步
  13. c++创建二维动态数组与内存释放
  14. %SystemRoot%
  15. Java -- 异常的捕获及处理 -- 异常类的继承结构
  16. Thrift的一些概念
  17. [转]将字体嵌入程序资源中 C# Winform
  18. scala 学习笔记一 列表List
  19. BZOJ4807:車(组合数学,高精度)
  20. c++ primer 4 数组和指针

热门文章

  1. python 连接数据库 pymysql模块的使用
  2. 【转】idea新建项目文件名为红色的解决办法
  3. day--86(MongoDB数据库)
  4. logstash根据配置文件启动时,报异常
  5. ZOJ - 2676 01分数规划 浮点ISAP
  6. Codeforces - 518D 概率DP初步
  7. 为什么我引用bootstrap的font-awesome的图标不出来,就单单是一个HTML里面引用的?
  8. poj3669
  9. Mysql5.7不区分大小写设置
  10. shell基础优化脚本