【问题标题】:undefined reference to Class::Method on 3rd party library3rd 方库上对 Class::Method 的未定义引用
【发布时间】:2015-07-10 06:23:39
【问题描述】:

我有一个适用于 Linux 和 Windows 的第 3 方 c++ 库,我正在将其导入 QT 项目并尝试调用一些方法。在 WinXP (MinGW 3.4.5) 上它可以编译,但在 Linux 64bit (gcc 4.8.2) 上我得到: 库中调用的许多方法对 Class::Method 的未定义引用。例如。我什至没有给他们打电话。

ld参数的顺序由qmake处理,用其他库测试就可以了。

有什么方法可以检查库是否应该工作?还是 g++ 3.5 和 4.8 不兼容?

$file libbase.so.1.0.0
libpbase.so.1.0.0: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=fccb75e93971bd702949224d961b8e78b33ac875, not stripped

$nm libbase.so.1.0.0 还表明所有缺少的方法都在那里。

谢谢。

【问题讨论】:

  • 您的链接顺序是否正确?因为顺序很重要,例如,如果您手动构建或链接,请始终将库放在命令行的最后。
  • 我想你可能错过了libbase.so 的头文件。你确定你已经包含了头文件?

标签: c++ linux qt4


【解决方案1】:

该库已链接到其他库,并且缺少一些方法。我已经阅读了 nm 手册,所有报告的方法都是:“U”符号未定义。然后我检查了其余的库,这些方法根本没有交付。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2012-07-29
    • 1970-01-01
    • 2011-03-31
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多