博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:在VS2010下编译、调试和生成mex文件
阅读量:6979 次
发布时间:2019-06-27

本文共 1310 字,大约阅读时间需要 4 分钟。

  最近帮人调了一个程序,是网上公开的代码,利用matlab与c++混合编程做三维模型关键点检测,发现他们可以用VS2010编译、调试、生成mexw32文件,因此觉得之前在Matlab上利用mex命令真是弱爆了(非常繁琐且对于cpp文件多的根本无法用)。所以特此转载和记录如何用VS2010+matlab2012a编译生成mexw32的方法。

1.打开VS2010,新建一个win32 项目,之后选择dll,空项目,如下图:

2.添加源文件mex1.cpp,编写mexFunction函数:

#include "mex.h"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){	mexPrintf("Hello, world!\n");}

3. 配置项目属性。  

打开项目属性配置页,C++ -> 附加包含目录 加入MATLAB安装目录下的 \extern\include 路径。

链接器 -> 附加库目录 加入MATLAB的 \extern\lib\win32\microsoft 路径。

链接器 -> 输入 -> 附加依赖项 输入libmx.lib libeng.lib libmat.lib libmex.lib 这四个lib文件。

在项目属性中的“预处理器”中的“预处理器定义”中添加MATLAB_MEX_FILE的宏定义。

4.添加模块文件mex1.def。

并且为模块文件添加内容:

LIBRARY TestEXPORTS mexFunction

5.修改生成后缀名。

6.在启动调试时关联matlab

在项目属性---配置属性---调试---命令,中添加Matlab的启动地址:”E:\Program Files (x86)\MATLAB\R2012a\bin\win32\MATLAB.exe”;在“工作目录”中添加mex1.mexw32文件所在的目录,我的目录是:“C:\Users\ky\Documents\visual studio 2010\Projects\mex1\Debug\”。

7.最后设定断点,启动调试,Matlab会自动启动,再在MATLAB中输入要运行的mexw32文件,例如我在matlab运行mex1(),就会自动跳转到vs2010的断点下。

注:当我设定断点,启动调试后弹出如下错误提示框:

该提示对话框是说matlab.exe没有调试信息,不能进行调试。这是正常的,因为matlab.exe是release方式编译的,其中不可能包含调试信息,我们也不需要对其进行调试。事实上也无法通过VC调试它。对此我们直接单击OK按钮将其忽略即可。


 

最后列出参考的几篇关键博客:

1、http://blog.sina.com.cn/s/blog_6ec1700e0100pgtd.html

2、http://www.cnblogs.com/lukylu/p/4042306.html

转载于:https://www.cnblogs.com/Key-Ky/p/4433218.html

你可能感兴趣的文章
jenkins自动化部署工具
查看>>
Unique Binary Search Trees java实现
查看>>
Django内置Admin
查看>>
一个疯狂想法
查看>>
ARM体系结构
查看>>
转:秒杀系统架构分析与实战
查看>>
让MySql支持表情符号(MySQL中4字节utf8字符保存方法)
查看>>
ASP.net(C#)批量上传图片(完整版)
查看>>
第十周课下作业
查看>>
windows 系统常用操作
查看>>
dp 专题
查看>>
CSS3 greyscale 滤镜实现
查看>>
【译文】怎样让一天有36个小时
查看>>
Python全栈开发day2
查看>>
python开发环境搭建
查看>>
c++ 普通高精减
查看>>
(二十一)数组的初始化
查看>>
IHttpHandler 在SharePoint中的应用
查看>>
c# 关闭软件 进程 杀死进程
查看>>
swift集成alamofire的简单封装
查看>>