Matlab 版 (精华区)
发信人: bage (醍醐灌顶@洗心革面), 信区: Matlab
标 题: VC++调用MATLAB Engine
发信站: 哈工大紫丁香 (2001年04月13日11:10:45 星期五), 站内信件
实验环境: 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
--
ooooO Ooooo *********************************
( ) ( ) # 大肚能容,容天下难容之事 #
\ ( ) / # 开口便笑,笑世间可笑之人 #
\ ) ( / *********************************
~~ ~~
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: bage.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.350毫秒