概述
实验环境:
MATLAB5.3, Visual C++ 6.0 SP3
1 生成几个连接库文件
在目录 c:matlabexterninclude 下找这几个文件:
libeng.def libmx.def libmat.def
在DOS行命令下生成三个库文件:
c:msdevbinlib /def:libmat.def /out:libmat.lib
c:msdevbinlib /def:libeng.def /out:libeng.lib
c:msdevbinlib /def:libmx.def /out:libmx.lib
把生成的三个LIB文件加入你的LINK项
libeng.lib libmx.lib libmat.lib
2 写包含engine功能的文件
可以参考:
c:matlabexternexampleseng_matengwindemo.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"
intMatlabDraw()
{
Engine *ep;
if(!(ep = engOpen(NULL))) {
MessageBox ((HWND)NULL,"Can't start MATLAB engine","Matlab Draw",MB_OK);
return0;
}
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);
return1;
}
5 设置其它编译连接选项
PreProcessor 加上: MATLAB_MEX_FILE
INCLUDE 加上: c:matlabexterninclude
LIB 加上: c:matlabexterninclude
最后,如果有必要的话,在DOS命令行运行: MATLAB /regserver
vc调用matlab引擎的一个简单例子
按如下步骤在vc中使用matlab引擎:
(1)。启动vc6。0,建立一个mfc(exe)类型工程matlabengine。
(2)。在项目建立后,设置环境。
Tool->options->Diretories 页面下Show directories for
先选择Include Files,输入路径:D:PROGRAMSMATLAB6P5P1EXTERNINCLUDE
在选择Library Files,输入路径:D:PROGRAMSMATLAB6P5P1EXTERNLIBWIN32MICROSOFTMSVC60
(我的matlab根目录是 D:PROGRAMSMATLAB6P5P1 ;这里的设置对不同工程只需要一次)
(3)。打开Project->Settings->Link页面,在Object/Library modules中加入libmatlb.lib libeng.lib libmx.lib。(这里对每个工程都要设置,并且根据需要选不同的库)
(4) 在工程目录的view的头文件中加入
#include "engine.h"
(5) 在about 对话框加入一个按钮,在其按钮响应函数如下:
voidCAboutDlg::OnButton1()
{
Engine *ep;
doublet[1];
t[0]=6.28;
mxArray *T=NULL;
if(!(ep=engOpen(NULL)))
{
AfxMessageBox("Can not open the matlab engine!");
exit(-1);
}
T=mxCreateDoubleMatrix(1,1,mxREAL);
memcpy((char*)mxGetPr(T),(char*)t,1*sizeof(double));
engPutVariable(ep,"T",T);
engEvalString(ep,"T1=0:pi/48:T;");
engEvalString(ep,"D=sin(T1)");
engEvalString(ep,"plot(T1,D,'r-');");
engEvalString(ep,"xlabel('t‘);");
engEvalString(ep,"ylabel('sin(t)');");
engEvalString(ep,"title('sin(x)的图像');");
mxDestroyArray(T);
}
(ilovejoy)
最后
以上就是香蕉流沙为你收集整理的matlab engine .lib,VC++调用MATLAB engine的全部内容,希望文章能够帮你解决matlab engine .lib,VC++调用MATLAB engine所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复