在Visual C++中建立MEX文件及调试
在Matlab环境中可以方便的编辑MEX文件,而编译MEX文件只要一句mex命令,所以一般不需要VC++环境来建立MEX文件。但对于大型的MEX程序,可能会比较复杂,容易出错,这时可以利用Visual C++强大的调试功能。下面通过一个简单的例子说明如何在Visual C++中建立及调试的步骤。
问题:在Visual C++中建立MEX文件,功能是在Matlab控制窗口中输出“Hello Matlab World”
1. Visual C++中MEX文件的建立
(1) 建立DLL工程
在Visual C++中创建一个MFC DLL工程,命名为MexDemo,如图1所示
图1 创建MFC DLL工程
(2) 设置输出函数
打开MFC DLL工程中的MexDemo.def文件,需要在其中定制DLL文件的输出函数,在def文件中的EXPORTS项中添加mexFunction一行,设置后,MexDemo.def文件内容如图2所示:
图2 MexDemo.def文件内容
(3) 添加应用程序代码
在工程中新建一个C++源文件,命名为main.cpp,将该文件添加到工程的源文件中,功能是输出一行"Hello Matlab World!"。如图3和图4所示:
图3 添加main.cpp文件
图4 main.cpp文件内容
(4) 编译器设置
因为C++文件中含有Matlab的库函数,要在Visual C++中成功编译此类MEX文件的话要对编译器做一些必要的设置,下面以Microsoft Visual C++ 6.0为例做如下设置。
添加include 路径
打开“Project setting”→“C/C++”→“Preprocessor”→“Additional include directories”,添加Matlab外部接口的include目录,本机为"I:\Program Files\MATLAB\R2007b\extern\include"。详细情况如图5所示:
图5 添加头文件目录
添加lib路径
打开“Project setting”→“Link”→“Input”→“Additional library path”,添加Matlab外部链接库的目录,本机为"I:\Program Files\MATLAB\R2007b\extern\lib\win32\microsoft"。详细情况如图6所示:
图6 设置库文件包含目录
添加链接库
打开“Project setting”→“Link”→“General”→“Object/Library modules”,添加附加依赖项libmx.lib、libeng.lib、libmat.lib以及libmex.lib,详细情况如图7所示:
图7 添加附件库文件
(5) 编译
设置好Visual C++的编译器后,就可以编译此工程了,编译成功后,在debug文件夹中会生成MexDemo.dll链接库文件。
(6) 运行
在Matlab环境下,把debug目录设为当前目录,然后在Matlab控制窗口中输入MexDemo,在Matlab控制窗口中得到结果:
Hello Matlab World!
>>
如果看不到图 可以下载附件,pdf文件中有