VC 调用MATLAB Engine
VC++调用MATLAB Engine
实验环境: Pwin98, MATLAB5.3, Visual C++ 6.0 SP3
1 生成几个连接库文件
在目录 c:\matlab\extern\include 下找这几个文件:
libeng.def libmx.def libmat.def
在DOS行命令下生成三个库文件:
c:\msdev\bin\lib /def:libmat.def /out:libmat.lib
c:\msdev\bin\lib /def:libeng.def /out:libeng.lib
c:\msdev\bin\lib /def:libmx.def /out:libmx.lib
把生成的三个LIB文件加入你的LINK项
libeng.lib libmx.lib libmat.lib
2 写包含engine功能的文件
可以参考:
c:\matlab\extern\examples\eng_mat\engwindemo.c
注意: 可以用.CPP做后缀. 比如:MATLAB.CPP
3 设置编译选项
把MATLAB.C加入你的PROJECT
MATLAB.C的开头加入两行:
#INCLUDE "stdafx.h"
#INCLUDE "engine.h"
包含其它头文件, 自己看情况而定
4 编写调用engine的函数
比如响应菜单调用自己的函数matlabPlot,而此函数的实现在matlab.cpp文件中实现,内容如下:
#include "stdafx.h"
#include "engine.h"
int MatlabDraw()
{
Engine *ep;
if (!(ep = engOpen(NULL))) {
MessageBox ((HWND)NULL,"Can't start MATLAB engine","Matlab Draw",MB_OK);
return 0;
}
engEvalString(ep, "x=0:0.01:2*pi;y=sin(x);plot(x,y);");
engEvalString(ep, "title('Matlab Drawing');");
engEvalString(ep, "xlabel('X');");
engEvalString(ep, "ylabel('Y');");
MessageBox(NULL, "Press any key …","MATLAB Draw",MB_OK);
engClose(ep);
return 1;
}
5 设置其它编译连接选项
PreProcessor 加上: MATLAB_MEX_FILE
INCLUDE 加上: c:\matlab\extern\include
LIB 加上: c:\matlab\extern\include
最后,如果有必要的话,在DOS命令行运行: MATLAB /regserver
遗传优化算法解决数学问题
需积分: 9 105 浏览量
2008-11-26
14:04:17
上传
评论
收藏 1.88MB RAR 举报
zhouheng19850605
- 粉丝: 0
- 资源: 5