Matlab+Qt開發筆記(一):matlab搭建Qt開發matlib環境以及Demo測試


前言

  做一些數據處理軟件,使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM