VC++中建立MEX文件及调试

http://wenku.baidu.com/view/812da668a98271fe910ef92d.html

在 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!

>>  

你可能感兴趣的:(VC++中建立MEX文件及调试)