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


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