我是靠谱客的博主 香蕉流沙,最近开发中收集的这篇文章主要介绍matlab engine .lib,VC++调用MATLAB engine,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实验环境:

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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部