C++ 未定义符号-符号查找错误

C++ 未定义符号-符号查找错误,c++,linux,eclipse,sfml,C++,Linux,Eclipse,Sfml,我正在尝试用Eclipse编译SFML2.0教程。该程序编译得很好,但运行时出现以下错误: /home/eXistys/workspace/SFML/Debug/SFML:符号查找错误:/home/eXistys/workspace/SFML/Debug/SFML:未定义的符号:_ZN2sf12RenderStates7DefaultE 在GCC C++编译器>中,我有: /home/eXistys/SFML/include 和GCC C++链接器下的i:< /P> `sfml图形 `sf

我正在尝试用Eclipse编译SFML2.0教程。该程序编译得很好,但运行时出现以下错误:

/home/eXistys/workspace/SFML/Debug/SFML:符号查找错误:/home/eXistys/workspace/SFML/Debug/SFML:未定义的符号:_ZN2sf12RenderStates7DefaultE

在GCC C++编译器>中,我有:

  • /home/eXistys/SFML/include
<>和GCC C++链接器下的i:< /P>
  • `sfml图形
  • `sfml窗口
  • `sfml系统
这会是什么?谷歌没有给出任何结果,SFML论坛没有提供任何有用的信息,我也找不到任何与stackoverflow真正相关的信息

以下是我成功编译的代码(的源代码):

#包括
int main()
{
sf::RenderWindow窗口(sf::VideoMode(300200),“SFML工作!”;
sf::Text Text(“Hello-SFML”);
while(window.isOpen())
{
sf::事件;
while(window.pollEvent(事件))
{
如果(event.type==sf::event::Closed)
window.close();
}
window.clear();
窗口。绘制(文本);
window.display();
}
返回0;
}
我从这里下载了SFML 2.0的最新快照:


亲切问候,

您缺少的是
sf::RenderStates::Default
。它在RenderStates.cpp中声明,RenderStates.cpp应该是sfml图形的一部分。您确定sfml图形正在链接到您的程序吗?rpath设置是否正确?我假设您正在构建可执行程序,而不是共享库,对吗?您是否尝试过执行
LD_PRELOAD=/path/to/sfml graphics/lib.so/path/to/program

您是否已将sfml库添加到eclipse中的项目选项中?是的,我已添加。在GCC C++编译器>中,我有/home /sIs/sfLM//GCC C++链接器,我有/home /sIys/sfML/SFML2Buff/LIB和SFML图形,SFML窗口,SFML系统,按顺序执行。我得到以下信息:eXistys@linux-djdf:~>LD_PRELOAD=/home/eXistys/SFML/sfml2 build/lib/libsfml-graphics.so/home/eXistys/workspace/SFML/SFML/home/eXistys/workspace/SFML/Debug/SFML:符号查找错误:/home/eXistys/SFML/sfml2 build/lib/libsfml-graphics.so:未定义符号:_ZN2sf6Window6createENS\u 9VideoModeerksjrkns\u 15ContextSettingSeal所以,我确信我正确链接了sfml图形。不过,我不知道您对rpath是什么意思。显然,您对sfml库的理解不正确。现在您缺少sfml窗口。请发布来自Eclipse(如果可用)的
ldd/path/to/program
和链接命令的结果。您已链接到位于/usr/lib64/中的SFML库,而您更希望从/home/eXistys/SFML/获得一个。这两个版本之间是否匹配?eclipse中应该有C-Build视图和原始编译器输出,您可以发布内容吗?
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(300, 200), "SFML works!");
    sf::Text text("Hello SFML");

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(text);
        window.display();
    }

    return 0;
}