编写mexw文件,C++与matlab混编

matlab MEX文件在vs2017下的调试:

mex文件编的我太心累了,调试起来太麻烦,但没办法,谁让matlab好用呢。。。以下是自己查找资料的总结。

mex文件其实就是dll文件,因此可以通过visual c++调试,本文使用的是vs2017和matlab2014a。

1)新建一个win32 dll 空项目

  1. 项目属性里 c++下的—常规—附加包含目录— 加入matlab下安装目录下R2014a\extern\include
  2. 链接器—附加库目录—加入R2014a\extern\lib\win32\microsoft
  3. 连接器—附加依赖项输入 libmx.lib libeng.lib libmat.lib libmex.lib
  4. 在链接器的输出文件里改成 (OutDir) (TargetName) .mexw32(64位系统相应改成64):这里是输出文件函数命名问题,后缀对了就能用
  5. 生产—配置管理器—平台改为x64
  6. 如果是64位系统,则再相应包含64位的目录,并且在连接器—高级—目标计算机设置成machineX64

2) 添加源文件

示例:hello.c
#include “mex.h”
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
mexPrintf(“Hello,world!\n”);
}
添加def文件代码:hello.def
LIBRARY “hello” // 这里写项目名称
EXPORTS mexFunction
(这里关键的是,如果没有把模块文件导入,记得检查 :链接器——输入——模块化文件,看是不是跟自己的def文件名相同)

3)生产解决方案

即会生产一个mexw32文件

4)调试

  1. 将matlab的current folder 设置成mexw32文件所在的路径
  2. vs2010-调试-附加到线程-选择matlab
  3. 源代码里设置断点
  4. matlab下输入代码或者函数(即mexw32文件的文件名)
  5. 即会跳转到vs的断点处。

以下是详细的参考地址:
http://blog.sina.com.cn/s/blog_a7e72e940101cti9.html

猜你喜欢

转载自blog.csdn.net/qq_33839192/article/details/88879122