Mex混合编程专题二:MEX Hello Word

VS2010中写mex入门级工程代码

 接着上一篇文章的工程继续,如下代码:


#include "stdafx.h" #include "mextest.h" #include "mex.h" #include <stdio.h> void hello() { printf("Hello World "); } void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[]) { hello(); }

将上面的代码都复制到mextest.cpp文件里面,把里面预生成的代码都覆盖掉。

项目右键,生成。

怎么样?出错了没?

没出错,恭喜你!

出错了?是不是“无法解析的外部符号错误呢?”,那就要记得去专题一里面看看2.a.2)了哦,看看是不是自己的工程和安装的matlab的lib文件不兼容,要保证工程了依赖的lib文件要么都是32位的要么都是64位的。

改变生成文件后缀

项目->右键->属性->常规,把目标文件扩展名由.dll改为.mexw64,当然,如果是32位程序就是.mexw32

clip_image002


VS2010中调试MEX

如何将matlab与vs2010捆绑起来调试程序是之前最大的困惑。在网上找资源,发现http://www.cnblogs.com/avril/archive/2012/09/12/2681192.htmlhttp://www.cnblogs.com/lukylu/p/4042306.html说的都挺好的。在这来份图文版的。

Step1. vs2010-Tools-附加到线程 Attach to process-选择matlab(快捷键Ctrl+Alt+P)。

clip_image003

Step2. 选择Matlab

clip_image005

Step3. VS进入调试状态。在上面写的mextest.cpp相应位置处下断点。

Step4. 将matlab的current folder 设置成mex生成文件所在的路径。(这步非常重要,要不无法调试调用)

Step5. 调用的函数名就是dll的主文件名。在这个例子里面就是mextest.mex64。这样就在matlab命令行里面输入mextest,回车进入VS断点!clip_image007

继续运行,matlab里面Hello word出现没?

clip_image008:D

1. 任何单位或个人认为本博的内容可能涉嫌侵犯其合法权益,可以及时的联系我(olenet#126#com),我会立即更正或删除。

2. 欢迎转载,记得贴链接^_^。www.cnblogs.com/OleNet

原文地址:https://www.cnblogs.com/OleNet/p/4347722.html