【问题标题】:Included libraries still cause "undefined reference" error包含的库仍然会导致“未定义的引用”错误
【发布时间】:2013-01-31 12:32:04
【问题描述】:

我已经在我的 Ubuntu 系统上安装了这个 http://www.sfml-dev.org/index.php 库。这些文件存储在 /usr/local/include 中。

我的 Eclipse 确实在“包含 >> GNU C++”下包含这些文件,但如果我构建程序,编译器会抱怨未定义的引用。

#include <SFML/System.hpp>
#include <iostream>

int main()
{
  sf::Clock Clock;
  return 0;
}

原因:

undefined reference to `sf::Clock::Clock()' main.cpp

猜猜我错过了什么?

【问题讨论】:

  • 忘记将库添加到链接依赖项?
  • 哦不,对不起。它只是 C++ 头文件。
  • 还有其他想法吗?我仍然无法运行它..
  • AFAIC 你做的都是正确的。如果您的 IDE 接受这样的输出,您能否将最终的 GCC 编译字符串添加到问题描述中?
  • 我想我知道出了什么问题,看看我的回答。只需添加 -lsfml-system 即可让所有东西正常工作。

标签: c++ eclipse gcc


【解决方案1】:

我的第一个建议是正确的。

Here 已记录,您必须像这样编译:

g++ -c clock.cpp
g++ -o clock clock.o -lsfml-system

所以请将 -lsfml-system 添加到库中。

【讨论】:

  • 谢谢你,你是对的.. 但我需要先调用“sudo ldconfig”。不知道..
【解决方案2】:

根据SFML tutorial,您需要使用“-l”指令链接到库。因此,请确保 eclipse 代表您执行此操作,如果没有,请尝试覆盖标志。

【讨论】:

  • 不同意。那么肯定是“找不到包含文件”的问题
  • 我不使用 Eclipse,所以我不确定它会给出什么样的错误。
  • 如上所述.. 如果我手动执行它现在可以工作。剩下的就是告诉 Eclipse 如何正确编译它.. ^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
  • 2014-05-22
相关资源
最近更新 更多