对sf::Window::hasFocus的未定义引用
Undefined reference to sf::Window::hasFocus?
问题
SFML窗口实现方法hasFocus()
,作为检查窗口是否具有焦点或是背景窗口的方便方式。
我觉得奇怪的是,这个方法似乎没有为sf::RenderWindow
实现,特别是在以下代码编译时,但没有链接。(也许这是一个错误或是开发人员的疏忽?如果是这样,那么在下一组错误修复中实现这一点可能是一个想法。(
代码示例:
sf::RenderWindow window;
while(window.isOpen())
{
if(window.hasFocus())
{
// do something
}
window.clear();
// etc drawing code
}
此编译使用: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...
吗?
变通办法
我设法用下面的代码做了我想做的事情,但这显然是一个混乱且不必要的复杂解决方法:
sf::RenderWindow window(sf::VideoMode(800, 600), "text");
bool WINDOW_HAS_FOCUS = false;
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == sf::Event::LostFocus)
{
WINDOW_HAS_FOCUS = false;
}
else if(event.type == sf::Event::GainedFocus)
{
WINDOW_HAS_FOCUS = true;
}
}
// ... later in program ...
if(WINDOW_HAS_FOCUS)
{
// do something
}
window.clear();
// etc drawing code
}
如果找不到我最初问题的解决方案,希望这对那些不能做我想做的事情的人有帮助。
您请求的功能在最新版本的SFML中已经可用。
void requestFocus();
// to give the window the focus
bool hasFocus() const;
// to check whether the window is currently focused
由于此请求的问题已在GitHub上打开。
该请求已与此请求合并到master中。
这是最后一次提取请求。
您遇到的错误可能是由您的SFML标头和已编译的SFML二进制文件之间的版本不匹配引起的。我建议您确保您的SFML二进制文件已更新或重新编译SFML。
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用