WIN8.1下Qt调用MATLAB engine

WIN8.1Qt调用MATLAB engine

环境说明

1.         系统:64win8.1

2.         MSVC201364

3.         QT5.4.2

4.         MATLAB2014a 64

说明:在本文档中调用matlab engine的教程是在QT Creator编译环境下,并不是在MSVC2013环境下进行。

关于MSVC2013下的QT,使用过程应该与MSVC2013 编写的32位控制台程序一样(没有做过测试),见链接

http://blog.sina.com.cn/s/blog_89a45b020102vrr1.html

 

IDE平台搭建

1.         MSVC2013 64位的安装

a)         这个就不细说了,直接在网上找一个安装后即可

b)         实际上这个也可以不用,但我为了用MSVC2013的编译器,就装了一个

2.         Qt5.4.2的安装

a)         Qt5.4.2是当前Qt的最新版本,自带Qt Creator

b)         下载地址:http://www.qt.io/download-open-source/#section-2,选择下载如图1所示的版本

c)         下载后安装时,选择如图2所未的选项安装即可,这种情况下只安装集成了MSVC2013 64位的编译器。之后一路安装下载即完成

WIN8.1下Qt调用MATLAB <wbr>engine

1 选择合适的QT版本

WIN8.1下Qt调用MATLAB <wbr>engine

2 选择安装的项目

Qt调用matlab engine的设置

1.         只需要将matlab engine的头文件和库文件目录,正确地在Qt工程文件中引用即可。不同版本的头文件和库文件位置不同,但都在matlab安装目录下的extern下,include目录下都是.h的文件,lib目录下都是.lib文件

2.         Qt工程.pro文件下加入如下几条命令:

INCLUDEPATH += C:\MATLAB\R2014a\extern\include

LIBS += C:\MATLAB\R2014a\extern\lib\win64\microsoft\libeng.lib

LIBS += C:\MATLAB\R2014a\extern\lib\win64\microsoft\libmat.lib

LIBS += C:\MATLAB\R2014a\extern\lib\win64\microsoft\libmx.lib

LIBS += C:\MATLAB\R2014a\extern\lib\win64\microsoft\libmex.lib

3.         说明:MATLAB的安装路径最好不要有空格,像“C:\Program Files”这个安装目录就有空格。对于这种情况,2中的库的引用方式会报错,解决办法如下:

INCLUDEPATH += $$quate(C:\MATLAB\R2014a\extern\include)

LIBS += $$quate(C:\MATLAB\R2014a\extern\lib\win64\microsoft\libeng.lib)

LIBS += $$quate(C:\MATLAB\R2014a\extern\lib\win64\microsoft\libmat.lib)

LIBS += $$quate(C:\MATLAB\R2014a\extern\lib\win64\microsoft\libmx.lib)

LIBS += $$quate(C:\MATLAB\R2014a\extern\lib\win64\microsoft\libmex.lib)

 

测试例程

1.         QT本质上是C++程序,因此直接将matlab中给定的例子拿来做测试即可。

2.         Qt Creator新建一个工程

例程如下:C:\MATLAB\R2014a\extern\examples\eng_mat\engdemo.c

3.         程序编译后,运行结果如图3,会打开一个matlab command window,并绘图

WIN8.1下Qt调用MATLAB <wbr>engine

图3 程序运行结果

Matlab engine API介绍

这里不做过多重复介绍,给出几个参考地址吧

1.         MATLAB Engine API介绍:http://blog.sina.com.cn/s/blog_67d069a90100q37c.html

2.         MATLAB Engine API for C,C++,and Fortranhttp://cn.mathworks.com/help/matlab/calling-matlan-engine-from-c-c-and-fortran-programs.html

其它问题

1.         Matlab mcc不可用

如果程序编译通过,运行matlab时无法加载,可能是matlab的破解不够彻底,可以到网上找一下破解包,关于matlab编译器mcc的破解。直接给出下载地址:

链接:http://pan.baidu.com/s/1gdzNBxx

密码:jqm5

2.         QT编译器会比较丰富,之前用的不是msvc201364位编译器,编译时无法载入库文件,问题产生的原因是用了32位的编译器调了64matlab的库文件,这个不兼容,解决办法有两个,要么编译器和matlab都用32位,要么都用64位,我选择了后者。编译出来的应用也是对应的32位和64

3. QT应用发布时,打开exe文件,可能提示缺少dll文件,有两个解决办法

a)针对编译此应用的计算机而言,将所依赖的dll文件所在的目录添加到环境变量中,通常都在这个目录下“C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin”。

b)针对没有安装QT的其它计算机而言,需要将所依赖的dll文件都复制到exe文件的根目录下即可。

4. 解决1的问题后,对于提示缺少matlab的dll文件,方法与1类似,但前提是等运行应用的计算机上需要提前安装matlab,否则没有matlab engine


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章