GLFW 第一响应者错误
GLFW first responder error
我正在尝试创建一个简单的 GLFW window 并且成功了,但是 xcode 给我一个错误:
2016-12-14 10:16:40.412191 CREngine[830:21929] [General] ERROR: Setting <GLFWContentView: 0x100369850> as the first responder for window <GLFWWindow: 0x10033ea00>, but it is in a different window ((null))! This would eventually crash when the view is freed. The first responder will be set to nil.
(
0 AppKit 0x00007fff9710b9a4 -[NSWindow _validateFirstResponder:] + 566
1 AppKit 0x00007fff968fc9eb -[NSWindow _setFirstResponder:] + 31
2 AppKit 0x00007fff969a466a -[NSWindow _realMakeFirstResponder:] + 406
3 AppKit 0x00007fff969a4480 -[NSWindow makeFirstResponder:] + 123
4 libglfw.3.dylib 0x00000001000a9895 _glfwPlatformCreateWindow + 631
5 libglfw.3.dylib 0x00000001000a5430 glfwCreateWindow + 487
6 CREngine 0x0000000100000e87 main + 135
7 libdyld.dylib 0x00007fffadd2d255 start + 1
)
Program ended with exit code: 0
我使用的代码是:
#include <GLFW/glfw3.h>
int main(void)
{
GLFWwindow* window;
/* Initialize the library */
if (!glfwInit())
return -1;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT);
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
让我感到困惑的部分是我所查找的内容包括我所拥有的提示将允许它在 mac 上工作但由于某种原因我仍然收到错误所以我是希望有人能帮我解决这个错误。
This seems to indicate that this is a known bug in macOS Sierra, and looking at the git-repo it seems to be fixed. However, it does not look like the (currently) latest version on their webpage 已更新。
如果您从他们的网站安装了 GLFW,我建议从 git 中提取代码并在本地编译。
(编辑:有关从源构建 .dylib 文件的一些有用详细信息,请参阅 this。)
我正在尝试创建一个简单的 GLFW window 并且成功了,但是 xcode 给我一个错误:
2016-12-14 10:16:40.412191 CREngine[830:21929] [General] ERROR: Setting <GLFWContentView: 0x100369850> as the first responder for window <GLFWWindow: 0x10033ea00>, but it is in a different window ((null))! This would eventually crash when the view is freed. The first responder will be set to nil.
(
0 AppKit 0x00007fff9710b9a4 -[NSWindow _validateFirstResponder:] + 566
1 AppKit 0x00007fff968fc9eb -[NSWindow _setFirstResponder:] + 31
2 AppKit 0x00007fff969a466a -[NSWindow _realMakeFirstResponder:] + 406
3 AppKit 0x00007fff969a4480 -[NSWindow makeFirstResponder:] + 123
4 libglfw.3.dylib 0x00000001000a9895 _glfwPlatformCreateWindow + 631
5 libglfw.3.dylib 0x00000001000a5430 glfwCreateWindow + 487
6 CREngine 0x0000000100000e87 main + 135
7 libdyld.dylib 0x00007fffadd2d255 start + 1
)
Program ended with exit code: 0
我使用的代码是:
#include <GLFW/glfw3.h>
int main(void)
{
GLFWwindow* window;
/* Initialize the library */
if (!glfwInit())
return -1;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT);
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
让我感到困惑的部分是我所查找的内容包括我所拥有的提示将允许它在 mac 上工作但由于某种原因我仍然收到错误所以我是希望有人能帮我解决这个错误。
This seems to indicate that this is a known bug in macOS Sierra, and looking at the git-repo it seems to be fixed. However, it does not look like the (currently) latest version on their webpage 已更新。
如果您从他们的网站安装了 GLFW,我建议从 git 中提取代码并在本地编译。
(编辑:有关从源构建 .dylib 文件的一些有用详细信息,请参阅 this。)