微信公众号: 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开发环境相关推荐

  1. macOS中SpaceVim搭建java开发环境

    安装JDK11 过程略,可参考: https://blog.csdn.net/lxyoucan/article/details/111120215 macOS安装支持Python 3的neovim 为 ...

  2. 4.1 MyEclipse中搭建Struts2开发环境

    4.1 MyEclipse中搭建Struts2开发环境 (尊重劳动成果,转载请注明出处:http://blog.csdn.NET/qq_25827845/article/details/5320594 ...

  3. 从零开始vim搭建Java开发环境[视频]

    视频教程 从零开始vim搭建Java开发环境 全屏观看 前言 起初我仅仅是想在手机上搭建一套能开发Java的vim环境.<玩转手机中的linux系统termux并搭建java开发环境> 玩 ...

  4. 从零开始vim搭建Java开发环境之coc.nvim 篇

    前言 vim之美妙我就不过多介绍了,懂的自然懂.之前我已经有一篇文章介绍如何使用SpaceVim来搭建Java开发环境. 传送门:<从零开始vim搭建Java开发环境[视频]> 最近使用c ...

  5. mac搭建python开发环境_Mac中基于Homebrew搭建python开发环境

    转移到mac上了.这里是在lion中搭建python开发环境的简单记录.这份记录不是一份step by step.而是事后写的记录,可能有记忆遗漏.如果有错误,请指正. 1.安装homebrew的准备 ...

  6. 在Eclipse中搭建Python开发环境之三新建python 提示django not found

    python 不是内部或外部命令 现在我假设你的python安装在C:\Python26目录下,设置环境变量方法如下: 方法一.我的电脑->属性->高级->环境变量->系统变量 ...

  7. linux搭建java开发环境_linux中搭建java开发环境

    今天试着在Linux下面搭建java开发环境,现总结一下具体步骤. 1.JDK的安装1.6 版本 cd /opt mkdir java 执行下面命令安装JDK(首先创建/opt/java目录) tar ...

  8. Arduino 002 --- 在Ubuntu(Linux) 中搭建Arduino开发环境

    在Ubuntu/Linux 中搭建Arduino开发环境 我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位 需要安装的Arduino的版本:Arduino 1.6.11(最新版本) ...

  9. 修正《用Docker快速搭建Go开发环境》文章中的一处错误

    上周写的文章<五分钟用Docker快速搭建Go开发环境>,文章发出去后有不少阅读量,而且从后台看的数据 60%的人都读完了.今天我自己用下面命令往 容器里的 Go 项目里下载包时发现了一处 ...

最新文章

  1. 在一个数组中查找两个重复出现的数字
  2. 大咖力荐!图深度学习奠基性著作重磅上市 | 送书福利
  3. Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp
  4. 【百度】大型网站的HTTPS实践(一)——HTTPS协议和原理
  5. PL/SQL之高级篇
  6. 邻接矩阵有向图的介绍
  7. JS实现文本全选并复制
  8. excel中怎么把超链接的结果(图片)直接显示出来_把500张产品图片导入Excel里?用这个方法可超速完成,码住...
  9. 弗尤博客(十)之聊天室
  10. HTML5之语义化标签
  11. Win10下Pytorch的安装和使用[斗之力三段]
  12. Android studio java.lang.UnsatisfiedLinkError加载.so文件失败解决办法
  13. 飞翔的小鸟(FlyBird)游戏C语言编程(含撞柱子)
  14. css字体居中(css字体居中对齐)
  15. CorelDRAW 里面如何将文字调整成半透明的颜色
  16. python youtube视频_Python3 使用you-get,youtube-dl,ffmpeg 下载全网视频并剪切视频
  17. 第二次数学建模训练题
  18. win7系统如何添加打印机服务器,Win7如何开启打印机服务?Win7如何添加打印机?...
  19. win10系统瑞星杀毒的卸载
  20. 华东师范大学、普陀区科委领导一行莅临和数集团

热门文章

  1. python查看数据最后五行_python数据分析
  2. Silverlight.XNA(C#)跨平台3D游戏研发手记:(十)3D 场景与控制设计①
  3. 命令行 调节 mac m1 鼠标 灵敏度
  4. android6.1内存,iPhone 6为何坚持1GB内存?安卓太坑爹!
  5. java操作mysql数据库时,update更新成功,但数据库内容不改变
  6. 什么?用Python实用脚本也能实现快速卡通画人物头像,这不就是妥妥的QQ秀嘛。
  7. [附源码]Node.js计算机毕业设计茶叶产品质量安全可追溯系统Express
  8. [译文]Qt自定义主题或使用外部主题(Qt Creator Themes)
  9. 【网络编程】---C++实现原始套接字捕获数据包
  10. 新闻稿软文字数多少字最为合适?