vc中编译,单步调试mex程序:
最好先具备如下基础:
1.调试过dll程序;
2. VC中编译过mex程序;
3 . 任意一种开发工具中调试程序的能力;
在VC中编译mex程序的配置步骤(如果已熟悉,跳过这段):
1. mex -setup, mbuild -setup 选择vc编译器(这未必需要,matlab中编译肯定会有此步的);
2. 创建DLL工程,在Project页面可以选择 MFC AppWizard(DLL);
3. 选择静态链接MFC的DLL;
4. 设定输出函数,在.def文件指定DLL的输出函数,mex程序为 mexFunction。类如如下:
; createFontBitmap.def : Declares the module parameters for the DLL.
LIBRARY "createFontBitmap"
DESCRIPTION 'createFontBitmap Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
mexFunction
5. 环境设置
可以在头文件中include,也可以在vc环境中,我习惯于在vc环境中设置:
A.Tools--->Options--->Directories---->Show Directories for---->Include 然后选择 $MATLABROOT/EXTERN/INCLUDE;
B. Tools--->Options--->Directories---->Show Directories for---->Library ,
$MATLABROOT/LIB/WIN32/MICROSOFT/MSVC60或者是$MATLABROOT/LIB/WIN32/MICROSOFT/MSVC70,以及$MATLABROOT/EXTERN/LIB
C. Project-->Setting, 在Link页面的Object/library modules填入 libmx.lib libmex.lib 等库,具体需要哪些库根据你的程序而定,目前这个就是上面这几个库。
6. 写代码,不要我说;
7. 调试:
A. 在debug模型下进行;
B. Project--->Setting--->Executable for debug session 填入 $MATLABROOT/bin/win32/MATLAB.exe ( 其实自己运行工程(点那个go按钮(F5))也会弹出对话框让你选择,然后浏览到matlab.exe即可;
C. 加断点;
D. Go(F5),会提示说matlab不可调试,你不用管它;
E. 在新启动的MATLAB进程命令窗中中调用mex函数
余下的与任何开发平台的任何调试步骤类似
最好先具备如下基础:
1.调试过dll程序;
2. VC中编译过mex程序;
3 . 任意一种开发工具中调试程序的能力;
在VC中编译mex程序的配置步骤(如果已熟悉,跳过这段):
1. mex -setup, mbuild -setup 选择vc编译器(这未必需要,matlab中编译肯定会有此步的);
2. 创建DLL工程,在Project页面可以选择 MFC AppWizard(DLL);
3. 选择静态链接MFC的DLL;
4. 设定输出函数,在.def文件指定DLL的输出函数,mex程序为 mexFunction。类如如下:
; createFontBitmap.def : Declares the module parameters for the DLL.
LIBRARY "createFontBitmap"
DESCRIPTION 'createFontBitmap Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
mexFunction
5. 环境设置
可以在头文件中include,也可以在vc环境中,我习惯于在vc环境中设置:
A.Tools--->Options--->Directories---->Show Directories for---->Include 然后选择 $MATLABROOT/EXTERN/INCLUDE;
B. Tools--->Options--->Directories---->Show Directories for---->Library ,
$MATLABROOT/LIB/WIN32/MICROSOFT/MSVC60或者是$MATLABROOT/LIB/WIN32/MICROSOFT/MSVC70,以及$MATLABROOT/EXTERN/LIB
C. Project-->Setting, 在Link页面的Object/library modules填入 libmx.lib libmex.lib 等库,具体需要哪些库根据你的程序而定,目前这个就是上面这几个库。
6. 写代码,不要我说;
7. 调试:
A. 在debug模型下进行;
B. Project--->Setting--->Executable for debug session 填入 $MATLABROOT/bin/win32/MATLAB.exe ( 其实自己运行工程(点那个go按钮(F5))也会弹出对话框让你选择,然后浏览到matlab.exe即可;
C. 加断点;
D. Go(F5),会提示说matlab不可调试,你不用管它;
E. 在新启动的MATLAB进程命令窗中中调用mex函数
余下的与任何开发平台的任何调试步骤类似