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的编译器版本的问题,始终如一地选择自己本地自己确认的编译器版本,就不会有问题了

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CodeWave智能开发平台--03--目标:应用创建--10初级采购管理系统总结

摘要 本文是网易数帆CodeWave智能开发平台系列的第14篇,主要介绍了基于CodeWave平台文档的新手入门进行学习,实现一个完整的应用,本文主要完成10初级采购管理系统总结 CodeWave智能开发平台的14次接触 CodeWave参考资源 网易数帆CodeWave…

muduo网络库剖析——通道Channel类

muduo网络库剖析——通道Channel类 前情从muduo到my_muduo 概要事件种类channel 框架与细节成员函数细节实现使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库,考虑的肯定是众多情况是否可以高效满足;而作为学习者&#x…

tui.calender日历创建、删除、编辑事件、自定义样式

全是坑🕳!全是坑🕳!全是坑🕳!能不用就不用! 官方文档:https://github.com/nhn/tui.calendar/blob/main/docs/en/apis/calendar.md 实例的一些方法,比如创建、删除、修改、…

大数据平台的硬件规划、网络调优、架构设计、节点规划

1.大数据平台硬件选型 要对Hadoop大数据平台进行硬件选型,首先需要了解Hadoop的运行架构以及每个角色的功能。在一个典型的Hadoop架构中,通常有5个角色,分别是NameNode、Standby NameNode、ResourceManager、NodeManager、DataNode以及外围机。 其中 NameNode 负责协调集群…

用git bash调用md5sum进行批量MD5计算

对于非常大的文件或者很重要的文件,在不稳定的网络环境下,可能文件的某些字节会损坏。此时,对文件计算MD5即可以校验其完整性。比如本次的 OpenStreetMap 导出包,我的学弟反馈通过网盘下载无法解压,并建议我增加每个文…

HashMap 的底层实现#JDK1.8 之前

最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号:“ Tom聊架构 ”, 回复暗号:“ 578”即…

HCIA——18实验:NAT

学习目标: NAT 学习内容: NAT 1.要求——基本的 2.模型 3.IP分配、规划、优化 1)思路 R2为ISP路由器,其上只能配置ip地址,不得冉进行其他的任何配置—ospf配置 认证 、汇总、沉默接口、加快收敛、缺省路由 PC1-PC2…

AIGC:人工智能驱动的数据分析新时代

AIGC:人工智能驱动的数据分析新时代 随着人工智能技术的迅猛发展,我们正迎来数据分析的新时代,其中AIGC(Artificial Intelligence with Generative Capabilities)的应用成为引领潮流的重要方向。本文将深入探讨几个关…

git中合并分支时出现了代码冲突怎么办

目录 第一章、Git代码冲突介绍1.1)什么是Git代码冲突①git merge命令介绍②代码冲突原因 1.2)提示代码冲突的两种情况①本地不同分支的文件有差异时:②本地仓库和git远程仓库的文件有差异时: 1.3)解决合并时的代码冲突…

搜索经典题——填充 9*9矩阵

题目:给定一个九行九列矩阵,填充矩阵元素,要求: 1、每一行每一列,每个小九宫格(图片画粗的地方就是)不能包含相同元素 2、每一行,每一列,每个小九宫格均会完整出现1-9的数…

LeetCode.2788. 按分隔符拆分字符串

题目 题目链接 分析 题目的意思是给我们一个字符串数组和一个分隔符,让我们按照分隔符把字符串数组分割成新的字符串数组。 看到这个描述,这不就是直接就是利用 按照分隔符分割字符串的系统库函数split(),这个函数的意思就是 把一个字符串…

Jenkins环境配置篇-更换插件源

作为持续集成的利器 Jenkins 已经得到了广泛地应用,仅仅作为一个工具,Jenkins 已然有了 自己的生态圈,支持其的 plugin 更是超过 1300。在实际中如何使用以及如何更好地使用 jenkins,一直是大家在实践并讨论的。本系列文章将会从如…