开发环境:VC++6.0 + Matlab7.0
采用MEX文件,将C语言编写的代码嵌人到Matlab中执行是Matlab与C语言混合编程的一种重要方式。但是,MEX文件不能在Matlab中像编写m文件那样便于调试,如果MEX文件实现的功能稍微复杂一点就会使程序的调试工作十分繁琐。尤其是对于很多已经习惯于采用C/C++开发环境的开发人员来说,更是非常的不适应。由于MEX文件就是动态链接库,因而可以采用Visual C++6.0作为开发和调试MEX文件的工具。
一、在VC6中设置MEX环境
1.1)添加include路径和Library路径,
Include files:
D:\MATLAB7\EXTERN\INCLUDE
D:\MATLAB7\EXTERN\LIB\WIN32
Library files:
D:\MATLAB7\EXTERN\LIB\WIN32\MICROSOFT\MSVC50
点击VC6工具栏上的【Tools】–》【Options】–》【Directories】–》Include file 或者Library files,添加对应的文件,如图(1)、(2)所示:
1.2)分别设置Matlab启动路径,C/C++选项卡和Link选项卡
点击VC6工具栏上的【Project】–》【Seting…】 –》Debug 或者 C/C++ 或者 Link选项卡,如图(3)、(4)、(5)所示:
二、新建一个testMexVC的动态链接库工程
2.1)点击【File】–》【Win32 Dynamic~Link Library】–>命名为:testMexVC –》点击An empty DLL project –》 Finish
2.2)新建testMexVC.c文件和testMexVC.def文件
//testMexVC.c如下:
#include "mex.h"
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
//printf("Hello world\n");
int a=2,b=3,c=0;
c=a+b;
mexPrintf("%d=%d+%d\n",c,a,b);
mexPrintf("Hello world!\n");
}
//testMexVC.def文件如下:
LIBRARY testMexVC
EXPORTS mexFunction
三、按F7编译,编译通过后,再按Ctrl+F5启动Matlab7.0,点击Matlab工具栏上的,修改路径为..\testMexVC\Debug,接着,在Matlab的命令行窗口输入:
testMexVC
效果如下: