前言
做一些数据处理软件,使用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+=-llibengLIBS+=-llibmatLIBS+=-llibmx
INCLUDEPATH+=$$PWDDEPENDPATH+=$$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+=-llibengLIBS+=-llibmatLIBS+=-llibmx
boolMatlabManager::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));returnfalse;}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运行就不会宕机,但是仍然宕机。(此处导致浪费不少时间,也试过可能加载其他库,但是没有这些情况),如下图:
后编译运行成功后,回头使用系统路径还是不可以,但是补一个系统路径测试如下:
直接运行编译后的exe,qt的windeployqt打成安装包后,会提示缺少dll,缺少一个增加一个,最后不提示,也不运行,不符合一般的qt应用常理。
因为运行时,需要加载matlab的运行环境。
将matlab/bin/win64目录的dll全部拷贝到Qt项目的release文件夹:
可以运行,如下图:
上一篇:没有了
下一篇:《Matlab+Qt开发笔记(二):Qt打开mat文件显示读取的数据》敬请期待…
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/120979753
网友评论