【问题标题】:Not able to locate error cpp linux无法找到错误 cpp linux
【发布时间】:2013-05-22 05:25:38
【问题描述】:

这可能真的很愚蠢,但是我在尝试使用 cmake 编译某些代码模块时遇到了以下错误

    acg_localizer_active_search.cc:(.text+0x43c6): undefined reference to            
    `ANNkd_tree::ANNkd_tree(float**, int, int, int, ANNsplitRule)'
    acg_localizer_active_search.cc:(.text+0x4441): undefined reference to    
   `ANNkd_tree::ANNkd_tree(float**, int, int, int, ANNsplitRule)'
  1. 请帮助我理解这个未定义的引用错误是什么意思。
  2. 提到的错误行“.text+0x...”是无法理解的。如何定位错误。

我已经被困了很长一段时间,错误地解决了一个又一个错误,最终到了这里。请帮我。提前致谢

很抱歉没有添加代码。它大约有 2000 行,不确定在哪里找到此错误。它是软件包的一部分,称为 acg_localizer。

【问题讨论】:

  • 1.这是链接器错误,链接器找不到符号。您需要将包含它的库或目标文件放在命令行中。
  • 你正在使用 Linux,我猜你正在使用 g++ 来编译你的应用程序。该命令假设为: g++ something.cpp -lANNkd_tree 如果您有 libANNkd_tree.so 文件或类似文件。请告诉我们你如何编译和链接你的代码
  • 类似于g++ source.cpp object_file.og++ source.cpp -lLibrary。但如果它是您要安装的软件包,您可能不会自己编写 makefile,因此您可能不需要将目标文件或库添加到编译命令中。
  • 您需要确保您的 CMakeLists.txt 中有一个指向所需库的 TARGET_LINK_LIBRARIES 命令。
  • @LakshmiNarayanan 您可以通过我的用户页面上的电子邮件与我联系。确保将 CMakeLists.txt 复制并粘贴到电子邮件中。

标签: c++ compiler-errors cmake linker-errors undefined-reference


【解决方案1】:

这是链接时间错误。在链接命令中指定的任何库和目标文件中都找不到方法ANNkd_tree::ANNkd_tree(float**, int, int, int, ANNsplitRule),尽管它被引用了。

您必须找出它的定义位置,并确保定义它的库位于链接器命令行上使用它的库之后。

您可以使用nm 工具找出目标文件或库定义或使用的符号(= 变量、方法)。发送man nm(或在谷歌上搜索)以了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 2011-01-15
    • 2015-05-26
    • 2011-02-18
    相关资源
    最近更新 更多