【发布时间】: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)'
- 请帮助我理解这个未定义的引用错误是什么意思。
- 提到的错误行“.text+0x...”是无法理解的。如何定位错误。
我已经被困了很长一段时间,错误地解决了一个又一个错误,最终到了这里。请帮我。提前致谢
很抱歉没有添加代码。它大约有 2000 行,不确定在哪里找到此错误。它是软件包的一部分,称为 acg_localizer。
【问题讨论】:
-
1.这是链接器错误,链接器找不到符号。您需要将包含它的库或目标文件放在命令行中。
-
你正在使用 Linux,我猜你正在使用 g++ 来编译你的应用程序。该命令假设为: g++ something.cpp -lANNkd_tree 如果您有 libANNkd_tree.so 文件或类似文件。请告诉我们你如何编译和链接你的代码
-
类似于
g++ source.cpp object_file.o或g++ source.cpp -lLibrary。但如果它是您要安装的软件包,您可能不会自己编写 makefile,因此您可能不需要将目标文件或库添加到编译命令中。 -
您需要确保您的 CMakeLists.txt 中有一个指向所需库的 TARGET_LINK_LIBRARIES 命令。
-
@LakshmiNarayanan 您可以通过我的用户页面上的电子邮件与我联系。确保将 CMakeLists.txt 复制并粘贴到电子邮件中。
标签: c++ compiler-errors cmake linker-errors undefined-reference