若該文為原創文章,轉載請注明原文出處
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/120979753
長期持續帶來更多專案與技術分享,咨詢請加QQ:21497936、微信:yangsir198808
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點擊傳送門)
Qt開發專欄:三方庫開發技術
上一篇:沒有了
下一篇:《Matlab+Qt開發筆記(二):Qt打開mat檔案顯示讀取的資料》敬請期待…
前言
??做一些資料處理軟體,使用matlab檔案,.mat檔案,
準備條件
??安裝matlab2016,發現是vs 12(是vs2011版本),Qt5.9.3是支持vs 14(是vs2015版本),安裝matlab2020a版本(該版本是vs 14版本的,每年matlab上半年發布a版本,下半年發布b版本),
??安裝請自行百度,下載,解壓,安裝都比較費時間,
??安裝完后:
??
Qt的準備條件
??(Qt5.9.3+QtCreator+msvc2015)
??挑選Qt的版本,需要支持matlab2020a的lib庫的版本(vs2014版本),筆者qt5.9.3,裝了VS2015,在QtCreator創建Demo工程,使用vs14版本編譯,構建套如下圖:
??
引入mat到Qt工程匯總
引入mat頭檔案路徑
??先用安裝的matlab做測驗,然后依賴的頭檔案抽出來模塊化,
# 添加matlab頭檔案
#INCLUDEPATH += "C:/Program Files/Polyspace/R2020b/extern/include"
INCLUDEPATH += $$PWD/matlab2020b/include
引入mat庫路徑以及基礎的兩個庫
??先用安裝的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
Demo
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));
}
Demo演示
??
模塊化
??進一步做了模塊化的封裝:
??
??Mat運行環境比較麻煩,所以單獨抽出來mat,運行mat需要90多MB的dll,如下圖:
??
工程模板:v1.0.0
??testMatlabDemo_工程模板_v1.0.0_基礎呼叫matlab庫成功.rar
入坑
入坑一:Qt程式運行直接宕機
問題
??編譯可以通過,但是QtCreator運行就掛掉,
影響問題判斷因素1
??將matlab的win64加入系統環境后,按道理QtCreator運行就不會宕機,但是仍然宕機,(此處導致浪費不少時間,也試過可能加載其他庫,但是沒有這些情況),如下圖:
??
??后編譯運行成功后,回頭使用系統路徑還是不可以,但是補一個系統路徑測驗如下:
??
影響問題判斷因素2
??直接運行編譯后的exe,qt的windeployqt打成安裝包后,會提示缺少dll,缺少一個增加一個,最后不提示,也不運行,不符合一般的qt應用常理,
原因
??因為運行時,需要加載matlab的運行環境,
解決
??將matlab/bin/win64目錄的dll全部拷貝到Qt專案的release檔案夾:
??
??可以運行,如下圖:
??
上一篇:沒有了
下一篇:《Matlab+Qt開發筆記(二):Qt打開mat檔案顯示讀取的資料》敬請期待…
若該文為原創文章,轉載請注明原文出處
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/120979753
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/344304.html
標籤:其他
上一篇:個性化頭像生成——微信小程式開發
下一篇:開卷資料結構~堆疊和佇列詳解
