Qt6静态库编译错误解决方案汇总
创作时间:
作者:
@小白创作中心
Qt6静态库编译错误解决方案汇总
引用
CSDN
等
11
来源
1.
https://m.blog.csdn.net/m0_47587308/article/details/144645244
2.
https://m.blog.csdn.net/goldenhawking/article/details/143836373
3.
https://forum.qt.io/topic/159115/failed-to-build-qt6-8-from-source-as-static-library-fails-at-qtimezonelocale-cpp
4.
https://forum.qt.io/topic/160252/qt-vs-tools-not-fully-working-with-msvc-2022-qt-6-8-0
5.
https://developercommunity.visualstudio.com/VisualStudio?space=8&q=nullEdits+were+made+which+cannot+be+compiled.+Changes+won%E2%80%99t+be+applied+until+the+compile+errors+are+fixed
6.
https://forum.qt.io/topic/159798/msys2-qt6-8-mingw64-ucrt64-static-version-patch-and-qt5-15-windeployqt-fix
7.
https://www.cnblogs.com/lamaper/p/18673930
8.
https://forum.qt.io/topic/156206/how-to-compile-icu-statically-into-qt-6
9.
https://forum.qt.io/topic/160465/failed-to-build-qt6-8-1-from-source-as-static-library-fails-at-qtimezonelocale-cpp
10.
https://forum.qt.io/topic/156328/qt-qpa-plugin-could-not-find-the-qt-platform-plugin
11.
https://forum.qt.io/topic/159772/some-doubts-about-linux-deployment
最近,Qt6静态库编译错误成为了开发者社区热议的话题。许多开发者在使用Qt6进行静态编译时遇到了诸如“无法解析的外部符号”等问题,导致编译失败。本文将为您详细介绍这一问题的解决方案。
问题表现
Qt6静态库编译错误主要表现为链接错误,常见的错误信息包括:
- “无法解析的外部符号 __std_mismatch_4”
- “undefined reference to `gr_make_face_with_ops'”
- “missing and no known rule to make it”
这些错误通常发生在使用MSVC、MinGW等编译器进行静态编译时,尤其是在Windows平台上。
解决方案
1. 更新Visual Studio
有开发者发现,通过更新Visual Studio到最新版17.12.3可以解决部分问题。这是因为某些错误可能与编译器版本有关,更新到最新版本可以获取最新的bug修复。
2. 重新编译Qt库
对于在本机编译时遇到的问题,建议尝试重新编译Qt库,而不是直接使用预编译的静态库。这可以避免一些潜在的依赖问题。
3. MSYS2环境下的特殊处理
在MSYS2环境下使用Qt6静态库时,需要对项目配置进行一些特殊处理:
- 在
.pro
文件中添加额外的依赖库,并使用no_lflags_merge
选项避免库的合并:
contains(QT, widgets){
MSYSTEM_PREFIX=$$(MSYSTEM_PREFIX)
greaterThan(MSYSTEM_PREFIX,' '){
contains(CONFIG, static) {
message ("Perform Qt6 Static library with MSYS2 patch.")
CONFIG += no_lflags_merge
LIBS += -ltiff -lmng -ljpeg -ljbig -ldeflate -lzstd -llerc -llzma -lgraphite2 -lbz2 -lusp10 -lRpcrt4 -lsharpyuv -lOleAut32
}
}
}
- 对CMake配置文件进行修改,去除绝对路径:
将:
INTERFACE_LINK_LIBRARIES "...;/ucrt64/lib/libuiautomationcore.a;\$<LINK_ONLY:uuid>"
修改为:
INTERFACE_LINK_LIBRARIES "...;libuiautomationcore.a;\$<LINK_ONLY:uuid>"
方案分析与建议
上述解决方案各有优劣:
- 更新编译器是最简单的操作,但可能无法解决所有问题
- 重新编译Qt库可以避免依赖问题,但耗时较长
- MSYS2环境下的特殊处理需要修改配置文件,对开发者要求较高
建议首先尝试更新编译器,如果问题仍未解决,再考虑重新编译Qt库或修改配置文件。
预防措施
为了避免此类编译错误,建议开发者在项目开发初期就注意以下几点:
- 确保所有开发工具(编译器、Qt版本等)保持最新
- 在项目配置中明确指定所有依赖库
- 尽量避免使用静态链接,除非有特殊需求
通过以上方法,可以有效解决Qt6静态库编译错误的问题。希望本文能帮助广大Qt开发者顺利推进项目开发。
热门推荐
探索AI数字人的技术发展,打造AI数字人虚拟主播应用!
微信支付实名认证新规落地遇阻:用户担忧与技术难题待解
微信支付实名认证全攻略:个人用户和商户必看!
文化中国行丨妙笔生花绘丹青 文房四宝之首“湖笔”有何妙处?
“湖笔”是“文房四宝”之一,中华文明的瑰宝,“湖”指的是什么
三防手机在户外环境的应用
兰州水墨丹霞:丝绸之路上的“黄金旅游资源宝库”
兰州未来一周最佳出行攻略:五大景点+五大美食,玩转“金城”兰州
冬日兰州:甘肃省博物馆精品展与中山桥雪景全攻略
兰州必打卡:黄河母亲雕塑、中山桥、水车博览园
胡适谈家庭教育:皓月女王的家庭责任与亲情羁绊
2024抖音热梗大盘点:从"city不city"到"Passion"
网络热词:改变日常交流的新力量
第一次世界大战时期的英国海军战略
英国皇家海军:从海上霸权到实力衰退
出现这 4 个症状,请立刻停下来休息,不开玩笑
杨洁导演揭秘:《西游记续集》拍摄幕后趣事
《西游记》续集中的孔雀公主:狗血爱情戏引发的改编争议
根管治疗新突破:从材料创新到再生医学
探索太行山的瑰宝:十个必访自然与文化景观
区块链赋能供应链管理:从产品溯源到物流追踪的革命性变革
双色球中奖缴税新规:如何合法合规享受幸运?
佛山团点赞双色球开奖透明度:40人现场见证,全程公开透明
双十一后机票暴跌!错峰游正当时
抑郁症严重便秘怎么治疗
茅山道士修炼秘籍大揭秘!
《都市茅山小道士》:当茅山道士遇上现代都市
微信支付改名攻略:轻松搞定!
在网上高效搜索的「秘密」,我想推荐这 3 个小技巧
GAN vs VAE:谁才是语音模拟界的王者?