Qt 5.15.2 (MSVC 2019)编译 QWT 6.2.0 : 编译MingW或MSVC遇到的坑

MingW下编译QWt 6.2.0

  1. 下载qwt最新版本,用git工具 git clone下载源码
    git clone https://git.code.sf.net/p/qwt/git qwt-git
    或者使用我下载的 qwt 2.6.0
    链接:https://pan.baidu.com/s/1KZI-L10N90TJobeqqPYBqw?pwd=pq1o
    提取码:pq1o

  2. 下载安装Qt 5.15.2
    链接:https://pan.baidu.com/s/1mpcVYjzjL0udYAh0TGjtrA?pwd=2sz5
    提取码:2sz5

  3. 用Qt 5.15.2 自带的Qt Creator 5.0.2打开qwt.pro文件
    在这里插入图片描述

  4. 编译前的参数修改(网上一找一大把)
    打开QMAKE_RPATHDIR *=$${QWT_INSTALL_LIBS}
    在这里插入图片描述
    注释掉src/qwtbuild下的qwtbuild.pri里的CONFIG += debug_and_release
    因为你的工程要链接的第三方库肯定是release版本的库了
    在这里插入图片描述
    classinclude下的qwtbuil下的qwtbuild.pri里的 CONFIG += debug_and_release也是要注释掉#
    在这里插入图片描述
    编译MSVC会编译不通过的原因,本质原因应该不是修改一个安装目录就可以了(以后来研究),把qwtconfig.pri下的QWT_INSTALL_PREFIX路径修改成自己Qt安装使用的编译器下的路径里的include里新建自己的qwt头文件目录(qwtbuld.pri和qwtconfig.pro虽然有多个,其实点进去就知道都是同一个,修改一处就都修改了)
    在这里插入图片描述

  5. 编译的顺序是先【执行qmake】,然后开始【构建】
    需要选择release版本,在构建里选择Release
    在这里插入图片描述

  6. qmake完成,及构建完成后,会在构建目录下生成编译文件xx.dll和xx.a文件
    7.

  7. 将qwt.dll和qwtd.dll放到本地的Qt 5.12.12安装目录的库目录中,这样基于Qt 5.12.12的自己的应用就可以使用qwt开发了,因为安装了qwt库
    在这里插入图片描述

  8. qwt的编译里还生成了designer.dll,如果将该designer.dll放到本地Qt 5.12.12的安装目录的designer插件中,那么在Qt开发中的designer里可以直接拖动使用qwt控件,那也是非常方便的。
    在这里插入图片描述
    放到本地Qt的designer插件目录中
    在这里插入图片描述

  9. 用Qt Creator新建自己的应用程序,用Qt Designer打开mainwindow.ui

在这里插入图片描述
在Qt设计师中左侧控件拉到最下面看到qwt控件,此处你可以兴奋一分钟,将qwt控件拖动到右边,然后保存,然后qmake你的工程,构建并运行,就把qwt安装并运行到了你的个人Qt工程中了
在这里插入图片描述
在这里插入图片描述

MSVC 下编译QWT 6.2.0

说实话在MingW下载编译qwt是比较智障无难度的,因为Qt的安装过程中会把MingW编译器一起安装了,所以在Qt构建工具中MingW编译器的选择也十分简单,一般不会出错,但是MSVC编译器是随着Visual Studio (VS2022 VS2017)安装的,所以Qt的构建工具中经常是默认的MSVC版本的项目构建是黄色感叹号,没法直接使用其新建Qt MSVC工程,所以如果你的Qt工具里Qt MSVC构建都还没有配置好,然后你用Qt Creator打开qwt.pro去编译MSVC版本的库,会遇到编译问题,所以先解决Qt构建问题。

  1. 我安装的是VS2022,所以编译器是MSVC2017,但是Qt构建里默认MSVC2017无法使用,cmake也是无法使用。
    在这里插入图片描述
    我的图片中MSVC2015 64bit编译可以构建那个纯粹是扯淡,因为我清楚我的本机是VS2022 MSVC2017不可能是MSVC2015,即便选择了MSVC2015,最后工程还是带黄色感叹哈,所以在编译器里进行配置
  2. 这个克隆的方法也是网上一抓一大把,其实原因很明显我就死死咬住我是MSVC2017就不会出错了
    在这里插入图片描述
    如果你选择C++里或C里列出的C++ Complier或C Complier会出问题,因为其实他们是MSVC2005,错得离谱,所以选中一个编译器然后点击右边的克隆
    在这里插入图片描述
    ABI里面选择自定义,然后MSVC2005就可以选择了,肯定是果断选择自己VS对应的编译器,我的是MSVC2017
    在这里插入图片描述
    确定OK之后,在Qt Creator新建项目,选择克隆的编译器的构建就可以创建你本机的MSVC版本Qt项目了。
  3. 回到编译qwt的MSVC版本,在构建的过程中可以看到是否是真正使用自己的编译器进行构建
    在这里插入图片描述
    像我的构建里是MSVC 64bit,所以qmake和构建就没有再报错。
  4. MSVC2017里把qwt的库,放到本地对应目录中
    在这里插入图片描述
    在这里插入图片描述
    放到本机MSVC的库目录中,说到这里不得不为Qt的设计点赞,这种用动态库dll扩展插件,来扩展功能,确实就是牛逼Plus。
    在这里插入图片描述
    把两个对应的lib文件放到Qt本地lib安装目录下
    在这里插入图片描述
    在这里插入图片描述

把designer下的qwt的designer插件也放到本地qt的designer设计师插件目录下
在这里插入图片描述
在这里插入图片描述
5. 新建Qt MSVC工程

在这里插入图片描述

在这里插入图片描述

# .pro里添加 qwt的配置
CONFIG += qwt
DEFINES += QT_DLL QWT_DLL
LIBS += -L"C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\lib" -lqwtd
LIBS += -L"C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\lib" -lqwt
INCLUDEPATH += D:\develop\qwt\qwt-git\src

在这里插入图片描述
在这里插入图片描述
6. 其实到这里很多时候已经完成了,但是这里很倔强,跟我开了个玩笑
在这里插入图片描述
: static_assert failed "Error in C++ Standard Library usage."
但是程序员天生就是对Bug兴奋,那就老套路了,挨字分析error总能找出问题所在
在这里插入图片描述
就是VS的编译器版本的问题,始终如一地选择自己本地自己确认的编译器版本,就不会有问题了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/334927.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二叉树的基础概念及遍历

二叉树(Binary Tree)的基础 1、树的概念 1、树的概念 树是一种非线性的数据结构,是由n(n>0)个有限结点组成一个具有层次关系的集合,将它称为树,是因为在形状上像一颗倒着的树,如下图所示就是一颗二叉…

Elasticsearch Index Shard Allocation 索引分片分配策略

Elasticsearch 索引分片的分配策略说明 在上一篇《索引生命周期管理ILM看完不懂你锤我 》(https://mp.weixin.qq.com/s/ajhFp-xBU1dJm8a1dDdRQQ)中,我们已经学会了索引级别的分片分配过滤属性,也就是在配置文件中指定当前节点的属…

2024 1.13~1.19 周报

一、本周计划 确定论文题目,重新思考能加的点子,重点在网络架构部分。主要了解了注意力模块如SE、CBAM、CA,在模型中插入注意力模块。读论文。 二、完成情况 2.1 论文题目 基于注意力的Unet盐体全波形反演 想法来源:使用的是二维…

Mermaid使用教程(绘制各种图)

Mermaid使用教程(绘制各种图) 文章目录 Mermaid使用教程(绘制各种图)简介饼状图简单的例子应用案例 序列图简单案例应用案例另一个应用案例 甘特图简单案例应用案例一个更为复杂的应用案例 Git图简单案例 总结 简介 本文将主要介…

AWS 专题学习 P5 (Classic SA、S3)

文章目录 Classic Solutions Architecture无状态 Web 应用程序:WhatIsTheTime.com背景 & 目标架构演进Well-Architected 5 pillars 有状态的 Web 应用程序:MyClothes.com背景 & 目标架构演进总结 有状态的 Web 应用程序:MyWordPress.…

CHAPTER 15: 《DESIGN GOOGLE DRIVE》第15章:《设计谷歌驱动器》

近年来,云存储服务如谷歌Drive、Dropbox、Microsoft OneDrive、苹果的iCloud已经变得非常流行。在本章中,你需要设计谷歌开车。 在进入设计之前,让我们花点时间了解一下谷歌驱动。谷歌Drive是一个文件存储和同步服务,可以帮助你存…

第十二篇【传奇开心果系列】Ant Design Mobile of React开发移动应用:内置组件实现酷炫CSS 动画

Ant Design Mobile of React 开发移动应用示例博文系列 第一篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:从helloworld开始 第二篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:天气应用 第三篇【传奇开心果系列】Ant Design Mobile of Reac…

FFmpeg之SWScale

文章目录 一、概述二、函数调用结构图三、Libswscale处理数据流程四、重要结构体4.1、SwsContext4.2、SwsFilter 五、重要函数5.1、sws_getContext5.1.1、sws_alloc_context5.1.2、sws_init_context 5.2、sws_scale5.2.1、SwsContext中的swscale()5.2.2、check_image_pointers5…

Vue-30、Vue非单文件组件。

非单文件组件&#xff1a; 一个组件包含n个组件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>非单文件组件</title><script type"text/javascript" src"https://cdn.jsde…

项目管理工具--禅道

一.禅道的安装 1.1.安装 二.禅道的使用 ​编辑 三.用产品经理的方式登录 3.1添加产品 3.2提需求 3.3添加产品需求 3.4创建项目 ​编辑 四.项目经理方式登录 ​编辑 4.1关联需求 ​编辑 4.2分解任务 五.测试方式登录 5.1测试建立用例 ​编辑 5.2需要换成项…

(学习日记)2024.01.19

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

K8S--安装Nginx

原文网址&#xff1a;K8S--安装Nginx-CSDN博客 简介 本文介绍K8S安装Nginx的方法。 1.创建Nginx目录及配置文件 mkdir -p /work/devops/k8s/app/nginx/{config,html} 在config目录下创建nginx.conf配置文件&#xff0c;内容如下&#xff1a; # events必须要有 events {wo…

Linux:多线程

目录 1.线程的概念 1.1线程的理解 1.2进程的理解 1.3线程如何看待进程内部的资源? 1.4进程 VS 线程 2.线程的控制 2.1线程的创建 2.2线程的等待 2.3线程的终止 2.4线程ID 2.5线程的分离 3.线程的互斥与同步 3.1相关概念 3.2互斥锁 3.2.1概念理解 3.2.2操作理解…

智能驾驶新浪潮:SSD与UFS存储技术如何破浪前行?-UFS篇

如果说SSD是赛道上的超级跑车&#xff0c;那UFS更像是专为智能汽车定制的高性能轻量化赛车。UFS采用串行接口技术&#xff0c;像是闪电侠一样&#xff0c;将数据传输的速度推向新高&#xff0c;大幅缩短了系统启动时间和应用程序加载时间&#xff0c;这对追求即时反应的ADAS系统…

高级架构师是如何设计一个系统的?

架构师如何设计系统&#xff1f; 系统拆分 通过DDD领域模型&#xff0c;对服务进行拆分&#xff0c;将一个系统拆分为多个子系统&#xff0c;做成SpringCloud的微服务。微服务设计时要尽可能做到少扇出&#xff0c;多扇入&#xff0c;根据服务器的承载&#xff0c;进行客户端负…

Golang 搭建 WebSocket 应用(六) - 监控

我在上一篇文章中&#xff0c;提到了目前的认证方式存在一些问题&#xff0c;需要替换为一种更简单的认证方式。 但是最后发现&#xff0c;认证这个实在是没有办法简单化&#xff0c;认证本身又是另外一个不小的话题了&#xff0c;因此关于这一点先留个坑。 本文先讨论一下另外…

Redis实战之-分布式锁-redission

一、分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码中&#xff0c;他的方法都…

Qt拖拽事件简单实现

1.相关说明 重写resizeEvent(这个按需重写)、dragEnterEvent(拖拽事件函数)、dropEvent(放下事件函数)&#xff0c;可以将本地图片拖拽到label标签中 2.相关界面 3.相关代码 #include "widget.h" #include "ui_widget.h" #include <QDragEnterEvent>…

A V I F是啥?

AVIF 是一种最近的文件格式,在本文撰写之时,已经得到了 Microsoft Edge 的支持,从而获得了重要的浏览器支持。 !重要提示:我们不再处于黑暗时代,大多数大型 Web 平台通常支持当前版本的浏览器的最新 1 年版本。您可以开始使用 AVIF 与 WebP 回退(回退仅在 2024 年底之前是必要的…

禅道的使用及简介

目录 一.禅道简介1.1 禅道主要功能和特点1.2 禅道官网 二.安装禅道2.1 下载禅道开源版2.2.修改数据库密码 三.登录禅道四.禅道的使用4.1.添加部门权限4.2.添加用户权限4.3.公司名修改4.4、.权限 五.创建产品5.1.产品经理创建产品5.2.添加产品模块5.3.添加产品计划5.4.项目经理的…