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/

3f56ffca9e477522db991eb042421f4d.png

e4b3261a025696a448ae75b635d55fd3.png

解压缩后,把这些源码拷贝到你中意的目录中,但是要保证如下的目录结构:

9eabd4360f78a37a36d40eb39caa4ed5.png

即:你拷贝到的目录/Qt/5.11.1/qtbase

2.安装VS2017

这个你直接去官网下载就行,有免费的,不过我这有个企业版的,链接如下:

链接: https://pan.baidu.com/s/12CkUbiq1i1qo2cmYErr1rw 提取码: e3rn

下载好后进行安装,勾选下面4项,如果用不到Linux的话,那个Linux的可不勾

e3a38c229e21edc4b64e6895ac3a868a.png

739b3fd043be45aba349d9e3bdad2554.png

确保以下两个目录中有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,是另一个文件夹

cbd8bf5e122ad0802c78a2a8407d5d71.png

用记事本分别打开这两个文件,然后另存为utf-8的编码格式。

6498f3009c849dd88ca5865d4ddc8beb.png

如果版本不同,放在不同的目录中的话,可以去下载一个叫Everything的软件,然后去搜索这写文件,嘿嘿。

3.安装Python3.6

安装Python3.6并添加到Path环境变量中,这部分略

4.编译源码了

如果上面的VS2017安装正确的话,应该会有下图中红框的那个,以管理员身份运行

ebf89bf30767d9599c9ba6c2ec894822.png

然后使用

cd命令切换到与

qtbase同级的目录中:

db2d1e304fc0754f0aea38c11abad5c6.png

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

4d5fdd75c1ab2fc679dc637b6e9e67e6.png

QTDIR是你的安装目录,即bin所在的目录

在PATH变量中增加如下内容

%QTDIR%\bin;

%QTDIR%\lib;

c0d6a3f8d53a6fc4978ccb35dc85e7ad.png

现在就完事了,接下来编写Qt的项目文件

6.解决方案与项目文档架构设计

首先自己建一个解决方案文件夹,再在解决方案文件夹下建立Qt项目文件夹,Common文件夹,Depends文件夹,Document文件夹,Installer文件夹:

3215a650a22b250cb3641b4253ac592b.png

Common文件夹用于存放项目依赖的静态库

Depends文件夹用于存放项目发布安装包时需要的各类dll文件

Doucment文件夹用于存放项目相关的说明文档

Installer文件夹用于存放项目安装包发布目录

Common文件夹中需要创建要创建一个Output文件夹作为项目的输出目录,在Output文件夹中还要创建一个TempFile文件夹作为项目输出的中间目录。Solution(Qt项目文件夹中的这个输出目录可在 .pro文件中直接指定)

Solution项目文件夹中要自己创建include, source, 等文件夹来分别存放头文件,源文件等其他文件

2f775319c09088b26f93a5bc603b9ffa.png

其他的都是项目自动生成的,不用手动创建。

我们可以先在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")

c3a918502463bc1c761f2607cc047cca.png

如此就能解决中文乱码的问题了

二. 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)

3fb816083730ee4ebbb88fc524f065dc.png

其中.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++混合编程的语法,这里就不说了。

最后的编译运行结果如下:

71d571b0bfeaefba486657d3bd60f496.png

7da16ea18faf030e38a3b642e2aff3c3.png

哈哈,开心!

三. 生成的应用程序在没有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 后面跟上你的可执行程序的路径,就会把所有需要的抽取到这里,如下:

7246f46b9b7994cc0a97501e8d64417f.png

04fd5fef4b536c3d30c60728eb68e7f4.png

93df297a0f95606b43ccb0a725403449.png

不要忘了,如果有调用了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++目录

49f9b4269f012ef1e0aa5c9bf6ddbf24.png

在包含目录中添加:

你的matlab安装路径\R2018b\extern\include

你的matlab安装路径\R2018b\extern\include\win64

在库目录中添加:

你的matlab安装路径\R2018b\extern\lib\win64\microsoft

添加好后及时点击应用!!!然后点击 链接器,选择第一个附加依赖项

6d3f4b796ca576aec2adfefbdeb72ac8.png

在其中添加下面七个 .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入门*这门课程的部分笔记

7916f1b44bec02d5edbb3301cf7849c2.png

MATLAB2018a+mexopencv+opencv+VS2017配置步骤,从下载到安装使用的全套姿势 最近需要读取视频,MATLAB居然不支持特定格式,徘徊在把代码改成python和配置MATLAB去调用opencv之间,最后选了后者。我也出现过失败,装了第二次。过程中一定要看仔细,如果遇到错误找找相同类型的帖子有没有说明。 条件:已经安装MATLAB2018a,VS2017 MATLAB命令行中mex -setup可执行 下载Windows版本的cmake: https://cmake... 阅读详情

相关推荐

解决MATLAB2020B关于找不到vs2019C++编译器问题

解决MATLAB2020B关于找不到vs2019C++编译器问题

wcm2577的博客 7573

64位MATLAB添加VS2017支持(mbuild -setup未找到支持的编译器或 SDK)

压缩包中包含64位MATLABVS2017的支持配置文件(xml文件),在MATLAB不识别VS2017的情况下使用。使用方法请在解压后查看:说明.txt 如果没有安装Product Server,可以忽略与其相关的步骤。

MATLAB中移动平均滤波器smooth函数的用法

MATLAB中移动平均滤波器smooth函数的用法 文章目录MATLAB中移动平均滤波器smooth函数的用法1 smooth的函数原型2 yy = smooth(y)解析3 yy = smooth(y,span)解析4 yy = smooth(y,span,method)解析5 smooth函数应用举例 1 smooth的函数原型 在MATLAB命令行中,输入 help smooth 可以看到...

凯哥大数据——刘凯的博客 2万+

MATLAB配置VS2017为C++编译器.zip

MATLAB R2016b中配置C++编译器,如果电脑中安装的是VS2017,将文件解压缩后放置在安装的文件夹,比如我的是E:\software\Matlab\bin\win64\mexopts中,然后在MATLAB中输入mex -setup即可。

MATLAB2018b和VS2017的混编

MATLAB2018b和VS2017的混编matlab下mex -setup命令选择VS编译器 matlab下mex -setup命令选择VS编译器 前提你已安装matlab和visual studio这两个软件,但是命令mex -setup C++发现找不到vs编译器(MinGW编译器可参考其他博文,这里不做介绍)。 1.首先,你需要确定你的matlab版本是否支持你安装vs版本,需要在路径里查看,我的是F:\matlab2018 application\bin\win64\mexopts,可根据自己

M_stder的博客 2227

MATLAB 2019a中添加Visual stutio 2017为编译器

本文主要介绍MATLAB 2019a中添加Visual stutio 2017为编译器。本人是用于对Simulink slrt(2015前叫XPC)的支持。 这个问题的关键在于安装过程中要添加好simulink slrt需要的各种支持插件。如果你的硬盘足够庞大,那么你完全可以安装全部插件,需要大概50G空间,那么一定没问题。 因为本人使用了 Microsoft surface,硬盘空间十...

congguitar的专栏 1万+

配置安装MatConvNet: Matlab2022b+Visual Studio 2017社区版+CUDA11.0+cuDNN

配置安装MatConvNet:本人经验,Matlab2022b,CUDA,cuDNN版本

HQKNB的博客 3066

NMAKE: fatal error U1065

近日,装了matlab2008b后,突然发现模型编译出错。百思不得其解。竟然是VC的NMAKE出错。乖乖,上网查了半天,发现竟然是QNX 倒的鬼。装完QNX后,出现环境变量 MAKEFLAGS=-IC:/QNX630/target/qnx6/usr/include 结果导致NMAKE无法使用出现下列问题: Microsoft (R) Program Maintenance Uti

fdybit的专栏 2672

vs2019编译的软件,换电脑软件无法运行

勾选“使用C++的桌面开发”---->"使用与最新v142生成工具的C++ MFC(x86和x64)"、2、将新电脑也配置成与vs2019一致的环境,比如安装vs2019的时候,勾选“使用C++的桌面开发”---->"Windows10 SDK()"等。1、将软件编译成release版本。

guoguo0524的博客 1043

VS工程,换电脑后出现的问题

之前在别人电脑上写好的project,拷贝到自己电脑上后,编译就出现了问题。 报了一大片类似下面的错: errorC2011:“CUserTool”:“class”类型重定义 解决方法: 右键单击工程,点清理,然后重新编译生成好了。。。。 转载于:https://www.cnblogs.com/lxt287994374/archive/2013/05/21/3090...

weixin_30832983的博客 279

【转】VS2008编译的程序在别的电脑上无法运行的解决办法

<br />[转载]VS2008编译的程序在别的电脑上无法运行的解决办法 - BianLLy<br /> <br />单击VS08界面菜单的【项目】,然后再点【属性】,在新弹出的对话框的【配置属性】中的【MFC的使用】中选择 在静态库中使用 MFC <br />这样编译器会在你生成的程序中自动打包一些需要的DLL文件,已保证在每台机器上都能运行程序。<br />(这样的弊端就是你的程序会变得比较庞大,不过可以通过加壳软件让它变小)<br />截图:<br /><br /> 同理在打包成安装程序后如果遇到此问

youlim的专栏 1397

VS2017+Qt5.12+Matlab2018混合编程

MatlabVS混合编程基础

m0_64182150的博客 626

Visual Studio 2017 support for Matlab 2016b

Visual Studio 2017 support for Matlab 2016b,解决2016b不识别vs2017的问题

matlab2016b配置VS2017编译器mexopts补丁文件

解决matlab2016b配置VS2017编译器时未找到支持的编译器或 SDK的补丁文件:(1)msvc2017.xml (2)msvcpp2017.xml 使用方式:将上述两个xml文件复制到MATLAB\R2017a\bin\win64\mexopts文件夹下。在命令行窗口键入mex -setup查看已配置完成编译器。 ‘’错误使用 mex 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器‘’

win7下matlab2016a配置vlfeat

1.下载vlfeat http://www.vlfeat.org/ 2.解压到了matlab安装目录的toolbox下 3.打开vs2013的这个 4.输入nmake version 查看我的版本是12.00.21005.1记住 5.打开nmake_helper.mak 修改 6.打开VS2013 x64 Nativ...

weixin_30241919的博客 296

ADC 动态参数分析matlab code的几个问题(span,spanh取值问题,幅度比例因子的添加等)

目前内外网自用ADC动态参数计算的matlab程序都是同一套模板的改版,存在共同的问题,迟迟没有得到解决,也困扰了我几天,不过还好,最终搞明白了几点。

qq_38239093的博客 3319

VS2017调用Matlab2016b进行绘图

1、运行环境 Windows 10 64bit Visual Studio Community 2017 Matlab 2016b 注:也适用于Matlab 2017a 2、matlab安装补丁 打开https://ww2.mathworks.cn/support/sysreq/previous_releases.html,如下图所示。 打开对应的matlab版本“Support...

shouzang的博客 1万+

VS2017 C++ 调用 Matlab的库----matlab环境下载与安装-调用方法-遇到问题以及解决方案

摘要: (1)、下载安装matlab运行环境; (2)、在VS项目中配置matlab环境; (3)、调用matlab接口; (4)、实践过程中遇到的问题以及解决方案;

m0_63694181的博客 1428

[填坑]VS2017MATLAB2016b混合编程(生成dll方式)

MATLAB 生成 dll 前的工作 1、配置MATLAB环境 控制面板-&gt;所有控制面板项-&gt;系统-&gt;高级系统设置-&gt;高级-&gt;环境变量 Path一栏,后面追加:C:\ProgramFiles\MATLAB\R2016b\bin\win64      (32位为win32) 更改环境变量后,请重启电脑,否则VS将出现:LINK : fatal error LNK...

清凉简装的博客 1万+
上一篇: mysql 禁用validate,mysql5.7禁用validate-password插件
下一篇: php家乡介绍网页,家乡网站设计与实现.doc
一路的欢乐长久�mk~
博客等级 码龄10年 12粉丝 86原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值