您的位置:首页 > 编程语言 > MATLAB

Matlab混合编程之引擎方式(C++篇)

2014-10-09 10:02 344 查看
进行了两天的测试,用Matlab混合编程有太多的苦楚,遇到的问题很多,谁叫Matlab有这么强大的功能。Matlab混合编程有好几种方式,引擎方式的优点是实现较为方便,基本可以用到Matlab的所有功能;缺点是移植性不好,需要目标机安装Matlab程序。本篇文章介绍C++的连接方式,已测试成功。

配置环境:vs2013(64位)+Matlab2013a(64位)+win8.1(64位)

以Matlab安装路径:C:\Program
Files\MATLAB\R2013a为例

环境变量:

C:\Program Files\MATLAB\R2013a\bin\win64;

C:\Program Files\MATLAB\R2013a\bin;

包含目录:

C:\Program Files\MATLAB\R2013a\extern\include;

C:\Program Files\MATLAB\R2013a\extern\include\win64;

包含库目录:

C:\Program Files\MATLAB\R2013a\extern\lib\win64\microsoft;

链接器->输入:

libeng.lib;libmx.lib;

示例代码:

#include "stdafx.h"

#include"engine.h"

int _tmain(int argc, _TCHAR* argv[])

{

Engine *
mat;

char *commandchar;

//打开引擎

if (!(mat
= engOpen("\0")))

{

printf("Cannot
start MATLAB engine!");

}

//使用引擎

commandchar
= "t=0:0.01:2*pi;y=sin(t);h=plot(t,y)";

engEvalString(mat,
commandchar);

commandchar
= "print(gcf,'-djpeg','c:\\Test\\Test2')";

engEvalString(mat,
commandchar);

//关闭引擎

engClose(mat);

return 0;

}

PS:

出现错误:错误 2 error
LNK2019: 无法解析的外部符号 _engOpen,该符号在函数 _wmain 中被引用 C:\Users\zhangzhizhi\documents\visual
studio 2013\Projects\Matlab_CPP\Matlab_CPP\Matlab_CPP.obj Matlab_CPP

原因:兼容性问题,Matlab2013a只支持64位,需要将VS项目调整为64位

解决方法:在配置管理器进行配置,平台选择X64即可

转自:http://blog.sina.com.cn/s/blog_6f7265cf0101nqhb.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: