bubbbbbai 2024-07-05 11:23 采纳率: 0%
浏览 12

linux qt使用protobuf报错undefined reference to

linux qt使用protobuf报错undefined reference to `google::protobuf::internal

文件是.proto用protoc命令转的.cc和.h,用的3.12.2版本的protoc

linux里东西比较多,没注意有个3.6.1版本就装了新的3.12.2
发现后把protobuf相关的全都删了,然后重新编了个3.12.2放到了/usr/local/protobuf3.12.2

  • gcc版本是11.4
    用--version,which,whereis都只能找到目前的3.12.2的protoc
    环境变量也改了,用echo $PATH也只能看到3.12.2的路径
    使用pkg也是正确的路径

pro文件加了
LIBS += -L/usr/local/protobuf3.12.2/lib
LIBS += -lprotobuf -lpthread
INCLUDEPATH += -I/usr/local/protobuf3.12.2/include

我在include的路径里搜索函数都能搜到

网上的的方法试遍了
但是依旧还是报错

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-05 11:23
    关注

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

    你的问题似乎与在Linux环境下使用Qt和Protobuf时遇到的链接问题有关。我会尝试帮助你解决这个问题。首先,确保你的环境配置正确,并且你正确地链接了Protobuf库。以下是一些可能的解决步骤:

    1. 确认库文件的存在和版本:确保你的系统中确实安装了正确版本的Protobuf库(不仅仅是protoc编译器)。你可以在终端中使用命令如ls /usr/local/protobuf3.12.2/lib来检查库文件是否存在。
    2. 检查链接:确保你的项目文件(如.pro文件)中正确地设置了库的路径和名称。你已经添加了库路径和库名称,但请确保这些路径确实指向了正确的库文件。
    3. 使用绝对路径:尝试在你的项目文件中使用绝对路径来链接库文件,而不是相对路径或变量。这样可以避免任何可能的路径解析问题。
    4. 重新运行qmake和make:修改项目文件后,确保重新运行qmake和make来更新你的项目并重新编译代码。
    5. 检查编译器和链接器的输出:查看编译器和链接器的输出信息,以获取更详细的错误信息。这可能会提供更多关于问题的线索。
    6. 确认proto文件编译正确:确保使用protoc命令正确编译了.proto文件,并且生成的.cc.h文件没有问题。
    7. 检查Qt版本和Protobuf版本的兼容性:确保你使用的Qt版本与Protobuf版本兼容。有时,不同版本的库之间可能存在不兼容的问题。
    8. 尝试重新安装Protobuf:如果以上步骤都没有解决问题,尝试卸载并重新安装Protobuf库,以确保安装过程中没有出现问题。
    9. 检查项目依赖:确保你的项目中没有遗漏任何必要的依赖项,特别是与Qt和Protobuf相关的依赖项。

    如果以上步骤都没有解决问题,我建议你提供更多的错误信息或项目配置细节,以便更准确地定位问题所在。此外,你也可以尝试在相关的开发社区或论坛上寻求帮助,可能会有其他开发者遇到类似的问题并找到了解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 7月5日
  • 创建了问题 7月5日

悬赏问题

  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 关于移动机器人坐标计算
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音