对sf :: Window :: hasFocus的未定义引用?

时间:2015-08-17 12:58:09

标签: c++ linker-errors sfml

问题

SFML窗口实现方法hasFocus(),作为检查窗口是焦点还是背景窗口的便捷方式。

我觉得奇怪的是,这个方法似乎并没有为sf::RenderWindow实现,特别是当下面的代码编译但没有链接时。 (也许这是开发人员的错误或疏忽?如果是这样,可能会在下一组错误修复中实现这一点。)

代码示例:

sf::RenderWindow window;

while(window.isOpen())
{

    if(window.hasFocus())
    {
        // do something
    }

    window.clear();
    // etc drawing code
}

使用以下内容进行编译:{{1​​}}

但不幸的是不会链接,出现以下错误:

g++ --std=c++11 main.cpp -o ratwatch -lsfml-graphics -lsfml-window -lsfml-system

我的链接库是否犯了错误?我错过了另一个/tmp/ccWhfqtT.o: In function `main': main.cpp:(.text+0xc3b): undefined reference to `sf::Window::hasFocus() const' collect2: error: ld returned 1 exit status 吗?

解决方法

我设法用以下代码做我想做的事情,但这显然是一个混乱且不必要的复杂的解决方法:

-lsfml...

如果找不到原始问题的解决方案,希望这对那些无法做我想做的事情的人有所帮助。

1 个答案:

答案 0 :(得分:2)

您请求的功能已在最新版本的SFML中提供。

void requestFocus(); 
// to give the window the focus

bool hasFocus() const; 
// to check whether the window is currently focused

此请求的问题已在GitHub here上打开。

请求已与此request合并为主。

这是最后的pull request

您遇到的错误可能是由SFML标头与已编译的SFML二进制文件之间的版本不匹配引起的。我建议您确保更新SFML二进制文件或重新编译SFML。