Mex混合编程专题二:MEX Hello Word
VS2010中写mex入门级工程代码
接着上一篇文章的工程继续,如下代码:
#include "stdafx.h" #include "mextest.h" #include "mex.h" #include <stdio.h> void hello() { printf("Hello World\n"); } 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
VS2010中调试MEX
如何将matlab与vs2010捆绑起来调试程序是之前最大的困惑。在网上找资源,发现http://www.cnblogs.com/avril/archive/2012/09/12/2681192.html和http://www.cnblogs.com/lukylu/p/4042306.html说的都挺好的。在这来份图文版的。
Step1. vs2010-Tools-附加到线程 Attach to process-选择matlab(快捷键Ctrl+Alt+P)。
Step2. 选择Matlab
Step3. VS进入调试状态。在上面写的mextest.cpp相应位置处下断点。
Step4. 将matlab的current folder 设置成mex生成文件所在的路径。(这步非常重要,要不无法调试调用)
Step5. 调用的函数名就是dll的主文件名。在这个例子里面就是mextest.mex64。这样就在matlab命令行里面输入mextest,回车进入VS断点!
继续运行,matlab里面Hello word出现没?
:D
1. 任何单位或个人认为本博的内容可能涉嫌侵犯其合法权益,可以及时的联系我(olenet#126#com),我会立即更正或删除。
2. 欢迎转载,记得贴链接^_^。www.cnblogs.com/OleNet