前言
做一些數據處理軟件,使用matlab文件,.mat文件。
安裝matlab2016,發現是vs 12(是vs2011版本),Qt5.9.3是支持vs 14(是vs2015版本),安裝matlab2020a版本(該版本是vs 14版本的,每年matlab上半年發布a版本,下半年發布b版本)。
安裝請自行百度,下載,解壓,安裝都比較費時間。
安裝完后:
(Qt5.9.3+QtCreator+msvc2015)
挑選Qt的版本,需要支持matlab2020a的lib庫的版本(vs2014版本),筆者qt5.9.3,裝了VS2015,在QtCreator創建Demo工程,使用vs14版本編譯,構建套如下圖:
先用安裝的matlab做測試,然后依賴的頭文件抽出來模塊化。
# 添加matlab頭文件
#INCLUDEPATH += "C:/Program Files/Polyspace/R2020b/extern/include" INCLUDEPATH += $$PWD/matlab2020b/include
先用安裝的matlab做測試,然后依賴的庫文件抽出來模塊化。
# 添加matlab庫路徑和庫文件
#LIBS += -L"C:/Program Files/Polyspace/R2020b/extern/lib/win64/microsoft" LIBS += -L$$PWD/matlab2020a/lib #LIBS += -llibeng LIBS += -llibmat LIBS += -llibmx
INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += \ $$PWD/MatlabManager.h SOURCES += \ $$PWD/MatlabManager.cpp # 添加matlab頭文件 #INCLUDEPATH += "C:/Program Files/Polyspace/R2020b/extern/include" INCLUDEPATH += $$PWD/matlab2020b/include # 添加matlab庫路徑和庫文件 #LIBS += -L"C:/Program Files/Polyspace/R2020b/extern/lib/win64/microsoft" LIBS += -L$$PWD/matlab2020b/lib #LIBS += -llibeng LIBS += -llibmat LIBS += -llibmx
bool MatlabManager::openMatFile(QString filePath) { MATFile *pMATFile = 0; LOG; QThread::sleep(5); pMATFile = matOpen(filePath.toUtf8().data(), "r"); if(!pMATFile) { LOG << "Failed to matOpen:" << filePath; QMessageBox::information(0, "Failed", QString("Failed to open file:%1").arg(filePath)); return false; } QMessageBox::information(0, "Succeed", QString("Succeed to open file:%1").arg(filePath)); }
進一步做了模塊化的封裝:
Mat運行環境比較麻煩,所以單獨抽出來mat,運行mat需要90多MB的dll,如下圖:
testMatlabDemo_工程模板_v1.0.0_基礎調用matlab庫成功.rar
編譯可以通過,但是QtCreator運行就掛掉。
將matlab的win64加入系統環境后,按道理QtCreator運行就不會宕機,但是仍然宕機。(此處導致浪費不少時間,也試過可能加載其他庫,但是沒有這些情況),如下圖:
后編譯運行成功后,回頭使用系統路徑還是不可以,但是補一個系統路徑測試如下:
因為運行時,需要加載matlab的運行環境。
將matlab/bin/win64目錄的dll全部拷貝到Qt項目的release文件夾:
可以運行,如下圖:
上一篇:沒有了
下一篇:《Matlab+Qt開發筆記(二):Qt打開mat文件顯示讀取的數據》敬請期待…
若該文為原創文章,轉載請注明原文出處
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/120979753