gpt4 book ai didi

c++ - 棘手的 undefined reference 错误

转载 作者:太空狗 更新时间:2023-10-29 12:35:58 25 4
gpt4 key购买 nike

尝试在 Linux 中使用 C++ 构建模块时,我遇到了一个棘手的“ undefined reference ”错误。我将在高层次上描述它,并在必要时稍后发布代码(它是专有的,因此发布它需要更改一些名称)。一些细节:

  • 模块 A(一个库)有一个我们称之为 Foo 的类和一个名为 Bar 的方法。模块 A 构建得很好,使用 nm 查看目标文件显示构造函数和 Bar 都已定义(它们显示为“T”)。
  • 模块 B(一个库)包含一个使用模块 A 的类,引用了 Foo::Foo、Foo::~Foo 和 Foo::Bar。它的 makefile 包括 -L/path/to/Foo 和 -lFoo。这个模块也构建得很好。但是,当我在模块 B 的目标文件上运行 nm 时,对模块 Foo::Foo、Foo::~Foo 和 Foo::Bar 的调用是未定义的(它们显示为“U”)。为什么它建立超出我的范围。
  • 模块 C - 其输出是一个可执行文件 - 包含对模块 B 的引用。当我尝试构建模块 C 时,然后它对我大喊大叫,因为从模块 B 到模块的 undefined reference A 的 Foo 和 Bar 方法。

    1. 如果引用未定义,为什么要构建模块 B?
    2. 为什么只有在我们到达模块 C 时才报告错误?

编辑:

  1. 我应该提到模块 C 的 makefile 也有 -L/path/to/Foo 和 -lFoo,但它仍然失败。关于我应该尝试的任何高级猜测?我有一种感觉,我将不得不发布一些代码...

最佳答案

我弄清楚了为什么它没有构建。这与这里的问题相同:

undefined reference to symbol even when nm indicates that this symbol is present in the shared library

关于c++ - 棘手的 undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11527200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com