matlab中vspan,搭建VS2017_QT_MATLAB开发环境
微信公众号: MitchHong
微信号: ASparkleSubscription
作者: Mitch Hong
Contents
零. 前言一. VS2017-Qt5.11.1环境的搭建1.下载源码2.安装VS20173.安装Python3.64.编译源码了5.安装成功后的环境变量的配置6.解决方案与项目文档架构设计7.编写Qt项目的 .pro文件8.使用qmake把Qt的项目文件(.pro文件)转化为VS2017的工程项目文件9.VS编译QT后,界面中的中文乱码问题二. QT项目文件中添加MATLAB环境在matlab中编译我们想调用的.m函数文件在Qt的项目环境中添加`INCLUDEPATH` 和`LIBS`三. 生成的应用程序在没有MATLAB的电脑上运行先在自己电脑上打包如何在没有MATLAB的电脑上运行其他打包方式补充:怎么手动在VS中添加MATLAB环境参考过的博客
零. 前言
上学期整了好久没成功,前几天由于一些其他问题,我重装了下系统,然后试了下新方法,就成功了。于是爆肝整理了一下,也方便我以后自己忘了再回头复习下。
虽然整个过程花了不少时间,但是毕竟磨刀不误砍柴工嘛,这配置好后,我能省掉很多工作量,比如matlab中那些信号处理相关的函数,我就不用在在C++中重写了。
一. VS2017-Qt5.11.1环境的搭建
Qt官网中只有32位(x86)的安装程序,而现在一般MATLAB都是64位的,所以如果我们想搭建Qt--MATLAB的环境就必须用64位的Qt库,那么我们只能编译器源码来实现。
1.下载源码
下面是Qt源码下载的网址(其他版本也行,我的是5.11.1),点击它,然后进入single,下载圈住的那个,zip文件:
http://download.qt.io/archive/qt/5.12/5.12.0/
解压缩后,把这些源码拷贝到你中意的目录中,但是要保证如下的目录结构:
即:你拷贝到的目录/Qt/5.11.1/qtbase
2.安装VS2017
这个你直接去官网下载就行,有免费的,不过我这有个企业版的,链接如下:
链接: https://pan.baidu.com/s/12CkUbiq1i1qo2cmYErr1rw 提取码: e3rn
下载好后进行安装,勾选下面4项,如果用不到Linux的话,那个Linux的可不勾
确保以下两个目录中有nmake存在:
...\Microsoft Visual Studio 14.0\VC\bin\nmake.exe
...\Microsoft Visual Studio 14.0\VC\bin\amd64\nmake.exe
其他的版本的VS我不确定nmake在那个文件夹下,反正bin下要有,bin的amd64下也要有。
进入下面的文件夹中:
...\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\vcprojectitems
注意啊,这个Microsoft Visual Studio后面没有14.0,是另一个文件夹
用记事本分别打开这两个文件,然后另存为utf-8的编码格式。
如果版本不同,放在不同的目录中的话,可以去下载一个叫Everything的软件,然后去搜索这写文件,嘿嘿。
3.安装Python3.6
安装Python3.6并添加到Path环境变量中,这部分略
4.编译源码了
如果上面的VS2017安装正确的话,应该会有下图中红框的那个,以管理员身份运行
然后使用
cd命令切换到与
qtbase同级的目录中:
dir命令是用来查看当前文件夹下的所有文件,qtbase就在其中
现在,在命令行中输入:
configure -confirm-license -debug-and-release -prefix c:/qt/5.11.1/ -opensource -platform
win32-msvc -nomake tests -nomake examples -skip qtactiveqt -skip qtandroidextras -skip
qtconnectivity -skip qtdeclarative -skip qtenginio -skip qtmacextras -skip qtserialport -skip
qtsensors -skip qtscript -skip qtwebchannel -skip qtwebengine -opengl desktop
-prefix指定安装路径,-nomake表示不编译它后面的,-skip表示跳过它后面的,跳过的那些都会在和qtbase同级的目录下找到,但是不编译的就没有。最后要在后面加上 -opengl desktop,因为很可能会用到。其他的不用管,照着敲上去就行
接下来,在命令行中输入:
nmake
然后就开始编译了,我电脑性能还不错,都编译了一个多小时好像,反正等了挺久的,(如果编译出错了,我不管啊,如果和我一样应该是不会错的,这东西挺麻烦的)
如果没有出错,就在命令行中输入:
nmake install
这样就进入安装了,安装过程也要等一会,如果一切正常,就成功了。如果编译出错,需要重新配置,可以运行
cd 你的安装目录/Qt/5.11.1
nmake distclean
然后再重新执行前面的操作(从configure开始)。
5.安装成功后的环境变量的配置
先设置环境变量,在环境变量中添加下面两个
QTDIR=C:\qt\5.11.1\
QMAKESPEC=win32-msvc
QTDIR是你的安装目录,即bin所在的目录
在PATH变量中增加如下内容
%QTDIR%\bin;
%QTDIR%\lib;
现在就完事了,接下来编写Qt的项目文件
6.解决方案与项目文档架构设计
首先自己建一个解决方案文件夹,再在解决方案文件夹下建立Qt项目文件夹,Common文件夹,Depends文件夹,Document文件夹,Installer文件夹:
Common文件夹用于存放项目依赖的静态库
Depends文件夹用于存放项目发布安装包时需要的各类dll文件
Doucment文件夹用于存放项目相关的说明文档
Installer文件夹用于存放项目安装包发布目录
Common文件夹中需要创建要创建一个Output文件夹作为项目的输出目录,在Output文件夹中还要创建一个TempFile文件夹作为项目输出的中间目录。Solution(Qt项目文件夹中的这个输出目录可在 .pro文件中直接指定)
Solution项目文件夹中要自己创建include, source, 等文件夹来分别存放头文件,源文件等其他文件
其他的都是项目自动生成的,不用手动创建。
我们可以先在include和source中新建若干个可能会用的.h或.cpp文件,新建文本文件就行,然后改一下拓展名,这样是方便在Qt的项目文件中添加,这样在VS的goon工程中就会自动创建头文件和源文件这两个文件过滤器,并把他们添加进去,这样就不用在VS中手动创建文件过滤器了。
7.编写Qt项目的 .pro文件
QT += widgets gui core charts #添加Qt库
#TARGET = Ex9_3 #生成的可执行程序的名字
TEMPLATE = app #说明我们要生成的是一个可执行程序
INCLUDEPATH += "include/" # 添加包含路径,因为在源文件中要包含include中的头文件,所以加上这个
# 添加源文件(带路径,可以是相对路径)
SOURCES += source/datatablewidget.cpp\
source/datavisualtabwidget.cpp\
source/main.cpp\
source/mainwindow.cpp\
source/setUpMainConnections.cpp\
source/toolbar.cpp
# 添加头文件(带路径,可以是相对路径)
HEADERS += include/datatablewidget.h \
include/datavisual_tabwidget.h\
include/mainwindow.h\
include/toolbar.h
DESTDIR = bin # 生成的可执行文件所在的目录
OBJECT_DIR = obj # 对象文件所在的目录
MOC_DIR = moc # moc文件所在的目录
# 同时生成debug和release两个版本
debug_and_release {
CONFIG(debug, debug|release) {
TARGET = Ex9_3_d
}
CONFIG(release, debug|release) {
TARGET = Ex9_3
}
}
更具体的 .pro配置中的参数说明见这篇博文:
https://blog.csdn.net/liang19890820/article/details/51774724
8.使用qmake把Qt的项目文件(.pro文件)转化为VS2017的工程项目文件
在那个VS的本机工具命令行中输入:
qmake -tp -vc
不过,这需要你先利用cd切换到你Qt的项目文件中去,再qmake。
这之后就会在你的项目文件中出现 xxxxxx.vcxproj文件,这是VS的项目文件,现在,你再在那个本机工具命令行中输入:
devenv xxxxxx.vcxproj
然后就会自动打开VS2017了,进入之后你再点击右上角的×,关闭VS,这时,它会提示保存 xxxxxxx.sln 这是VS的解决方案文件,你修改一下它的保存位置为解决方案文件夹(项目文件夹的父目录),而不是默认的项目文件夹。其实这个.sln放在项目文件夹中也行,看习惯把,不扯这个了,爱放哪放哪。
当我们添加新的带Q_OBJECT的文件后,需要重新qmake一下,然后devenv, 关闭,重新保存一下sln。但是这样可能需要重新配置项目的属性,不过好在不是很麻烦。
因为不qmake的话VS它自己是不会帮我们把带Q_OBJECT的头文件进行moc的,这样运行就会出错(无法解析的外部符号),只有用qmake它才会自动帮我们moc。因为这个moc文件是需要和我们的源文件一块编译的,所以必须要有。
其实这不qmake也行,只不过就要我们手动去moc,用cd切换到qttools/bin文件夹下,moc.exe就再其中,然后输入:
moc .../.../xxxx.h -o .../.../moc_xxxx.cpp
注意moc文件的格式:moc_原文件名.cpp
然后在VS中的项目中的GeneratedFiles上右键,把这个生成的moc文件添加进去。可见如果不用qmake的话,当你每次改动带Q_OBJECT的头文件文件都需要重新手动地去moc一下,也挺烦人的。
9.VS编译QT后,界面中的中文乱码问题
在所有的头文件中的#pragma once下面加上如下一行:
#pragma execution_character_set("utf-8")
如此就能解决中文乱码的问题了
二. QT项目文件中添加MATLAB环境
其实吧,你可以在VS的项目属性中手动添加,不过,前面不是说了嘛,你要是在VS中手动添加的话,你每次qmake后在VS中手动添加的那些都会消失,因此你就需要再在VS中重新手动添加,挺烦人的。
在matlab中编译我们想调用的.m函数文件
函数如下:
function [C]= matAdd(n,B)
A = ones(n);
C = conv2(A,B);
mesh(C);
end
然后再MATLAB的命令行中输入:
mcc -W cpplib:matAdd -T link:lib matAdd.m
在生成的那一堆文件中选择下面三个文件(.h, .lib, .dll)
其中.dll文件要拷贝到你生成的.exe文件所在的目录中。那个.h和 .lib文件随你放哪,不过建议放在Common文件夹中,或者单独建立一个MATLAB的文件夹放进去。
在Qt的项目环境中添加`INCLUDEPATH` 和`LIBS`
# 采用绝对或者相对路径
INCLUDEPATH += "include/" \
"..\\Common\\mat_add\\include" \
"C:\\Program Files\\Polyspace\\R2019a\\extern\\include" \
"C:\\Program Files\\Polyspace\\R2019a\\extern\\include\\win64"
LIBS += "C:\\Program Files\\Polyspace\\R2019a\\extern\\lib\\win64\\microsoft\\libmex.lib" \
"C:\\Program Files\\Polyspace\\R2019a\\extern\\lib\\win64\\microsoft\\libmx.lib" \
"C:\\Program Files\\Polyspace\\R2019a\\extern\\lib\\win64\\microsoft\\libmat.lib" \
"C:\\Program Files\\Polyspace\\R2019a\\extern\\lib\\win64\\microsoft\\libeng.lib" \
"C:\\Program Files\\Polyspace\\R2019a\\extern\\lib\\win64\\microsoft\\mclmcr.lib" \
"C:\\Program Files\\Polyspace\\R2019a\\extern\\lib\\win64\\microsoft\\mclmcrrt.lib" \
"..\\Common\\mat_add\\Output\\matAdd.lib"
上面的INCLUDEPATH中第一个是我这个Qt项目本身的头文件的路径,第二个是你在matlab中编译生成的头文件,第三第四个是你matlab安装目录下extern下的那两个包含文件夹。
上面LIBS中的前6个是你Matlab安装目录下的extern下的lib目录后面的lib文件,第7个是你自己在matlab中编译出的lib文件。这个LIBS要指定具体的依赖库,而不是依赖库所在的路径
matlab的安装目录不同,但是安装路径后面的那些绝对都是相同的。
接下来,你就可以在VS中用混合编程的语法等来调用你用MATLAB生成的lib文件了。和C++混合编程的语法,这里就不说了。
最后的编译运行结果如下:
哈哈,开心!
三. 生成的应用程序在没有MATLAB的电脑上运行
先在自己电脑上打包
先用Qt自带的 windeployp.exe抽取这个exe文件所需的一些库
windeployp.exe这个文件在…/qttools/bin目录下
使用cd 在那个本机工具提示符中切换到windeployp.exe所在的目录中
使用下面的方法,来抽取
windeployqt.exe D:\PersonalAllAboutStudy\Programming\AllAboutQt\QtEx\build\debug\Ex5_1.exe
就是windeployqt.exe 后面跟上你的可执行程序的路径,就会把所有需要的抽取到这里,如下:
不要忘了,如果有调用了MATLAB,要把你在matlab中编译的那个 .dll文件拷贝到这里来
如何在没有MATLAB的电脑上运行
开发带有MATLAB组件的软件时,MCRinstaller是个必备组件,目标计算机上必须要安装这个组件软件才可以正常运行。所以必须要到mathworks的官网中下载对应的runtime安装到没有matlab的电脑上才行,链接如下:
https://ww2.mathworks.cn/products/compiler/matlab-runtime.html
一定要下载与你打包的电脑上相同的runtime版本才行,不然可能会出问题,反正起码版本不能低于你的版本。安装时会自动添加到路径,如果你的电脑上有MCRinstaller.exe的话直接拷贝过去更保险点。
其他打包方式
参考下这篇博文把:
https://blog.csdn.net/lhl1124281072/article/details/80046527
补充:怎么手动在VS中添加MATLAB环境
当不需要qt时,只要在VS中用matlab,可以看看这个:
在你的项目上右键选择属性,点击VC++目录
在包含目录中添加:
你的matlab安装路径\R2018b\extern\include
你的matlab安装路径\R2018b\extern\include\win64
在库目录中添加:
你的matlab安装路径\R2018b\extern\lib\win64\microsoft
添加好后及时点击应用!!!然后点击 链接器,选择第一个附加依赖项
在其中添加下面七个 .lib,其中最后一个是你自己在matlab中生成的 .lib文件
libmex.lib
libmx.lib
libmat.lib
libeng.lib
mclmcr.lib
mclmcrrt.lib
matAdd.lib
参考过的博客
[0]
[1]
[2]
[3]
[4]
[5]
[6] 51cto上的,白振勇老师讲的*Qt Charts入门*这门课程的部分笔记
matlab中vspan,搭建VS2017_QT_MATLAB开发环境相关推荐
- macOS中SpaceVim搭建java开发环境
安装JDK11 过程略,可参考: https://blog.csdn.net/lxyoucan/article/details/111120215 macOS安装支持Python 3的neovim 为 ...
- 4.1 MyEclipse中搭建Struts2开发环境
4.1 MyEclipse中搭建Struts2开发环境 (尊重劳动成果,转载请注明出处:http://blog.csdn.NET/qq_25827845/article/details/5320594 ...
- 从零开始vim搭建Java开发环境[视频]
视频教程 从零开始vim搭建Java开发环境 全屏观看 前言 起初我仅仅是想在手机上搭建一套能开发Java的vim环境.<玩转手机中的linux系统termux并搭建java开发环境> 玩 ...
- 从零开始vim搭建Java开发环境之coc.nvim 篇
前言 vim之美妙我就不过多介绍了,懂的自然懂.之前我已经有一篇文章介绍如何使用SpaceVim来搭建Java开发环境. 传送门:<从零开始vim搭建Java开发环境[视频]> 最近使用c ...
- mac搭建python开发环境_Mac中基于Homebrew搭建python开发环境
转移到mac上了.这里是在lion中搭建python开发环境的简单记录.这份记录不是一份step by step.而是事后写的记录,可能有记忆遗漏.如果有错误,请指正. 1.安装homebrew的准备 ...
- 在Eclipse中搭建Python开发环境之三新建python 提示django not found
python 不是内部或外部命令 现在我假设你的python安装在C:\Python26目录下,设置环境变量方法如下: 方法一.我的电脑->属性->高级->环境变量->系统变量 ...
- linux搭建java开发环境_linux中搭建java开发环境
今天试着在Linux下面搭建java开发环境,现总结一下具体步骤. 1.JDK的安装1.6 版本 cd /opt mkdir java 执行下面命令安装JDK(首先创建/opt/java目录) tar ...
- Arduino 002 --- 在Ubuntu(Linux) 中搭建Arduino开发环境
在Ubuntu/Linux 中搭建Arduino开发环境 我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位 需要安装的Arduino的版本:Arduino 1.6.11(最新版本) ...
- 修正《用Docker快速搭建Go开发环境》文章中的一处错误
上周写的文章<五分钟用Docker快速搭建Go开发环境>,文章发出去后有不少阅读量,而且从后台看的数据 60%的人都读完了.今天我自己用下面命令往 容器里的 Go 项目里下载包时发现了一处 ...
最新文章
- 在一个数组中查找两个重复出现的数字
- 大咖力荐!图深度学习奠基性著作重磅上市 | 送书福利
- Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp
- 【百度】大型网站的HTTPS实践(一)——HTTPS协议和原理
- PL/SQL之高级篇
- 邻接矩阵有向图的介绍
- JS实现文本全选并复制
- excel中怎么把超链接的结果(图片)直接显示出来_把500张产品图片导入Excel里?用这个方法可超速完成,码住...
- 弗尤博客(十)之聊天室
- HTML5之语义化标签
- Win10下Pytorch的安装和使用[斗之力三段]
- Android studio java.lang.UnsatisfiedLinkError加载.so文件失败解决办法
- 飞翔的小鸟(FlyBird)游戏C语言编程(含撞柱子)
- css字体居中(css字体居中对齐)
- CorelDRAW 里面如何将文字调整成半透明的颜色
- python youtube视频_Python3 使用you-get,youtube-dl,ffmpeg 下载全网视频并剪切视频
- 第二次数学建模训练题
- win7系统如何添加打印机服务器,Win7如何开启打印机服务?Win7如何添加打印机?...
- win10系统瑞星杀毒的卸载
- 华东师范大学、普陀区科委领导一行莅临和数集团
热门文章
- python查看数据最后五行_python数据分析
- Silverlight.XNA(C#)跨平台3D游戏研发手记:(十)3D 场景与控制设计①
- 命令行 调节 mac m1 鼠标 灵敏度
- android6.1内存,iPhone 6为何坚持1GB内存?安卓太坑爹!
- java操作mysql数据库时,update更新成功,但数据库内容不改变
- 什么?用Python实用脚本也能实现快速卡通画人物头像,这不就是妥妥的QQ秀嘛。
- [附源码]Node.js计算机毕业设计茶叶产品质量安全可追溯系统Express
- [译文]Qt自定义主题或使用外部主题(Qt Creator Themes)
- 【网络编程】---C++实现原始套接字捕获数据包
- 新闻稿软文字数多少字最为合适?