Qt + MSVC使用SARibbon控件,踩坑记录

8 篇文章 0 订阅

以下是笔者的碎碎念,正文向下滑…

emm…背景是这样子的,前两天老师查看需求实现情况的时候,表示我没有界面操作。。。。啊这。。。我遂即恶补了Qt的知识,熬完了传智的视频和练习,老师表示不要原生要Office风格的系统。。。(似乎老师们对Office的风格都有一种执念…)好吧,继续研究ing,找到了开源项目SARibbon,刚上手超级生涩(笔者以前是做前端的,最近开始C++的桌面端),过程中遇到了很多的Bug…作为一名多年码农,有Bug和吃饭一样见怪不怪了,But…就有那么一两个Bug,能让你一杯茶,一首歌,一行代码改一天…果断记录下来…(头秃的过程中我开始了碎碎念…)

正文!!!

注意事项:
  1. 编译SARibbonpro文件是\src\SARibbonBar\SARibbonBar.pro,不是根目录下面的SARibbon.pro,虽然编译出来的东西似乎都一样,但是官方文档中这么写,就标注一下,严谨能避免很多莫名其妙的Bug
  2. 把编译完的整个项目放到项目里,(应该最后只需要留下includelib、和dll,目前只测试到这里)
  3. 项目的pro文件中需要添加的,位置如下,一个在头,一个在尾。
    include($$PWD/..SARibbon-master/common.pri)
    DESTDIR = $${SARIBBON_BIN_DIR}
    
    SOURCES += \
        main.cpp \
        mainwindow.cpp
    
    HEADERS += \
        mainwindow.h
    
    FORMS += \
        mainwindow.ui
    
    include($$PWD/../SARibbon-master/SARibbonBar.pri)
    
  4. 使用的时候,在hpp文件和cpp的类继承SARibbonMainWindow(parent)类即可
问题1

在Qt中正常运行的项目,在Vs中打开,运行的时候会报错,表示找不到SARibbonBard.lib,查看一下链接器的输入,地址是SARibbon项目编译输出目录下,但是里面并没有这个文件,只有一个.dll和一个.o的文件。

解决

.o文件时WinGW环境下编译的静态库文件也就是VS中生成的.lib文件,所以在VS中运行,只需要把SARibbon项目在VS中编译,把静态库连接到项目中就可以了。

问题2

这个时候,在Qt Creator中在运行,又会报error: undefined reference to __imp__ZN16SARibbonCategory9addPannelERK7QStr之类的错误

解决

这也是没有引用静态库造成的,但是我们明明换成了lib的静态库,怎么又不行了。

不难想到,在WinGW环境下需要引用它支持的.o静态库,在MSVC中需要引用.ib的静态库。

观察一下WinGW编译生成的build......文件中,只有.cpp文件和.o的文件


结尾碎碎念…emm…写完之后有感觉,只是一个很简单的bug,怎么就改了一下午。。。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值