VS2010调用MatlabR2010b的图形引擎

来源:互联网 发布:java实训班 编辑:程序博客网 时间:2024/04/29 18:30

VS2010调用MatlabR2010b的图形引擎


参考自:http://www.cnblogs.com/Vonng/p/4232586.html?utm_source=tuicool&utm_medium=referral

一、介绍

用C++调用Matlab图形引擎,主要是利用COM组件服务。将Matlab作为COM Server,接受Client应用程序的请求。Matlab的m脚本是一种解释性语言,因此大多数调用都是直接通过传递命令字符串的eval方法实现的。

具体流程:

(1)通过C++ 程序,包含Matlab提供的头文件engine.h

(安装目录文件下:D:\Program File\matlab2010\extern\include)


(2)利用Matlab提供的静态库文件libeng.lib,libmx.lib;

(位于D:\Program File\matlab2010\extern\lib\win32\microsoft


(3)利用Matlab提供的动态链接库.dll文件.

(位于目录:D:\Program File\matlab2010\bin\win32)


二、实例演示
1、新建一个空项目,然后添加.cpp文件,其代码为:

#include<cstdlib>#include <cstdio>#include<cstring>#include"engine.h" const int BUFFER_SIZE = 1024;char buffer[BUFFER_SIZE];void test(){    Engine* ep;     mxArray *x1 = NULL;     mxArray *y1 = NULL;    if ((ep = engOpen("")) == NULL)     {         printf("Engine Fail");     }     engOutputBuffer(ep, buffer, BUFFER_SIZE);     printf("Init Success");      double x[5] = { 1.0, 2.5,3.7,4.4,5.1 };     double y[5] = { 3.3,4.7,9.6,15.6,21.3 };     x1 = mxCreateDoubleMatrix(1, 5, mxREAL);     y1 = mxCreateDoubleMatrix(1, 5, mxREAL);      memcpy((void *)mxGetPr(x1), (void *)x, sizeof(x));     memcpy((void *)mxGetPr(y1), (void *)y, sizeof(y));      engPutVariable(ep, "x", x1);     engPutVariable(ep, "y", y1);     engEvalString(ep, "plot(x,y)");     getchar();     engClose(ep);} int main(){     test();}

2、配置开发环境

(1)我的Matlab版本是32位的。选择“生成----->配置管理器”,活动平台选择Win32(64位系统选择X64)


(2)相关库文件和头文件的配置。

通过“项目----->属性----->VC++目录”,设置:


可执行程序目录为D:\Program File\matlab2010\bin\win32(.dll库文件所在目录);

包含目录:D:\Program File\matlab2010\extern\include(头文件所在目录);

库目录:D:\Program File\matlab2010\extern\lib\win32\microsoft(.lib库文件所在目录)。

(3)包含.lib库文件

通过“项目----->属性----->链接器--->输入---->附加依赖项”;


3、编译程序与运行


0 0