嵌入式大白菜 2024-03-14 15:48 采纳率: 66.7%
浏览 14
已结题

QT使用动态库链接进行编译时报错

在QT使用动态库链接编译时出现问题:
报错如下:

/usr/bin/ld: /home/INVINCIBLE/WX/demo/1790_LIBtop/1790/lib/libLIB1790.so: undefined reference to `__cxa_throw_bad_array_new_length@Qt_5'
collect2: error: ld returned 1 exit status
make: *** [Makefile:1287: 1790] Error 1
15:39:35: 进程"/usr/bin/make"退出,退出代码 2 。
Error while building/deploying project 1790 (kit: Replacement for "Desktop Qt 5.14.2 GCC 64bit")
The kit Replacement for "Desktop Qt 5.14.2 GCC 64bit" has configuration issues which might be the root cause for this problem.
When executing step "Make"

描述:
1.该项目由QT5.8 Ubuntu环境下创建,动态库libLIB1790.so使用QTcreator创建。项目移至Qt 5.18 Debain环境下报错。
2.在原环境下创建一个简单c++动态库联合编译工程,移植成功;
3.在原环境下创建一个包含QT c++动态库联合编译工程,移植成功;
4.移植整个项目出现问题。(包含路径正确)

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-14 15:49
    关注

    引自免费微信小程序:皆我百晓生

    当在Qt 5.18 Debian环境下编译项目时,遇到undefined reference to '__cxa_throw_bad_array_new_length@Qt_5'错误,这通常意味着链接器在寻找与Qt相关的某个特定符号,但未能在提供的库文件(libLIB1790.so)或其依赖项中找到它。这个错误可能是由于以下原因导致的:

    1. 版本不匹配:尽管您确认路径正确,但是Qt版本从5.8升级到了5.18,可能存在一些内部ABI(应用程序二进制接口)的变化,导致需要不同的库函数。确保libLIB1790.so是使用与目标环境(即Qt 5.18 Debain)相匹配的Qt版本构建的。

    2. 链接顺序问题:动态链接时,链接器遵循从左到右的顺序查找符号。如果Qt相关库没有被放在正确的位置以供链接器找到所需的符号,也会产生这个问题。请检查Makefile或.pro项目的链接顺序,确保包含所有必要的Qt库,比如-lQtCore -lQtGui -lQtWidgets等,并且它们出现在libLIB1790.so之前。

    3. 缺失链接标志:确保在编译和链接步骤中包含了正确的Qt库路径和链接标志。例如,在.pro文件中添加类似如下内容:

      QT += core gui widgets # 或者其他需要的模块
      LIBS += -L/home/INVINCIBLE/WX/demo/1790_LIBtop/1790/lib -lLIB1790 -lQt5Core -lQt5Gui -lQt5Widgets
      
    4. 库本身的问题:检查libLIB1790.so是否正确构建并包含了所有依赖项。如果该库也依赖于Qt,那么它应该在构建时就链接了相应的Qt库。

    解决步骤可以按照以下进行:

    1. 确认libLIB1790.so是在Qt 5.18环境下构建的。
    2. 检查并修改Makefile或.pro文件中的链接顺序和链接库路径,确保Qt库被正确链接。
    3. 如果库由CMake管理,请确保CMakeLists.txt中包含了对Qt库的正确查找和链接。

    通过以上排查和修正后,重新编译项目看是否解决了链接错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 创建了问题 3月14日

悬赏问题

  • ¥20 找辅导 初学者 想实现一个项目 没有方向
  • ¥15 关于渗漏场的电场分布模拟
  • ¥24 matlab怎么修改仿真初始时间
  • ¥15 两分段线性回归模型分析阈值效应
  • ¥15 前端和后端代码都没报错,但是点登录没反应的?
  • ¥100 需要远程解决QSQLITE问题!
  • ¥15 利用光场表达式画出初始光场强度分布图像等几个问题在这两个图片里
  • ¥15 gozero求手把手教学,400一天
  • ¥15 泥浆冲清水的泥浆分布
  • ¥15 LASSO回归分析筛选关键基因,适合多大样本量?