若该文为原创文章,转载请注明原文出处
本文章博客地址: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 += $$PWDHEADERS += \$$PWD/MatlabManager.hSOURCES += \$$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

Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试相关推荐

  1. Qt之手写识别开发笔记:Zinnia介绍、编译、使用以及Demo

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  2. 硬件开发笔记(六): 硬件开发基本流程,制作一个USB转RS232的模块(五):创建USB封装库并关联原理图元器件

    `该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125369228 红胖子网络科技博文大全:开发技术集合( ...

  3. 硬件开发笔记(八): 硬件开发基本流程,制作一个USB转RS232的模块(七):创建基础DIP元器件(晶振)封装并关联原理图元器件

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125370284 红胖子网络科技博文大全:开发技术集合( ...

  4. ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植

    目录 ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植 Atmel两个官方lib介绍 一.CryptoAuthLib简介 Lib中最主要的三种对象类型: 二. ...

  5. 学习笔记1:搭建floodlight+mininet+sflow环境

    学习笔记1:搭建floodlight+mininet+sflow环境 浏览了大量的CSDN博客和师兄继承下来的学习笔记,自己想总结一下搭环境的过程,为以后给自己查看时候好整理 全部都在VM虚拟机中ub ...

  6. Jenkins 之 单节点 对接GitHub搭建自动化部署项目环境 与 实战测试 (三)

    Jenkins 之 单节点 对接GitHub搭建自动化部署项目环境 与 实战测试 (三) 目录 Jenkins 之 单节点 搭建自动化部署项目环境 与 实战测试 (三) Jenkins 服务器 环境 ...

  7. 嵌入式系统开发笔记80:应用Qt Designer进行主界面设计

    前言   本篇文章讲解PyQt的基本使用方法,我们将应用Qt Designer来设计一个主界面,学习完本篇文章的内容后,你将获得如下技能.   (1)在VS Code中启动Qt Designer    ...

  8. 【Qt】在Win10上搭建Qt开发环境

    1.Qt Creator与Qt SDK Qt Creator是为开发Qt程序提供了代码编辑环境. Qt SDK 为开发者提供了必要的类和函数以及相关工具. 2.安装Qt Creator 双击运行:qt ...

  9. linux ipp qt,win10+QT5.10.1搭建OpenCV开发环境

    一.   搭建前的准备工作 1.下载QT 2.下载OpenCV 3.下载Cmake工具 二.安装软件 1.QT傻瓜式安装,记得安装路径即可 2.Cmake安装,注意在安装过程中勾选"为所有用 ...

最新文章

  1. vue[源码]你不知道的observe!
  2. 苹果核 - Tangram 的基础 —— vlayout(Android)
  3. android auto错位,recyclerview 的item布局错乱
  4. read函数头文件 window_of_property_read_string 剖析
  5. mysql触发器调用存储过程出错_mysql 触发器中调用存储过程
  6. 电影控、如何从视频文件名获取信息
  7. conda创建环境及激活环境失败问题
  8. 基础学习总结(一)--工程结构与打包过程
  9. 5.这就是搜索引擎:核心技术详解 --- 检索模型与搜索排序
  10. 视频教程-R语言数据分析挖掘实战-大数据
  11. radon变换(c++、OpenCV实现)
  12. 国内外接口文档工具哪家强?
  13. 迭代期望和方差(iterated expectation,variance)
  14. win10清除系统垃圾的几个命令
  15. Python+selenium实现医院自动挂号
  16. SpringBoot系列之(三):启动过程
  17. VMware 虚拟机怎么识别不了ISO文件
  18. 视频教程-数据中台-数据仓库建模设计方法和实现-数据仓库
  19. LearnOpenGL学习笔记—PBR:IBL
  20. CBAM(Convolutional Block Attention Module)

热门文章

  1. 监控RecyclerView有效曝光数据
  2. js打开新窗口被拦截问题
  3. 提交App Store被拒
  4. java计算机毕业设计海南自贸港知识学习与测试源码+mysql数据库+系统+lw文档+部署
  5. 汉朝书法家蔡邕、刘德昇、张芝
  6. NetWork面板 介绍
  7. Vizio一周使用感受
  8. 包邮赠书 |《漫画算法2》2021全新进阶版来袭!
  9. u盘安装linux进入dracut
  10. java枚举 星期_Java 枚举