xCode 8.1 GLFWWindow“第一响应者”问题

时间:2016-11-03 15:27:20

标签: c++ xcode opengl glfw

我最近一直在使用OpenGL,并决定将C ++用于我最新的OpenGL项目。我正在使用xCode 8.1,我的库路径和标题路径正确链接。一切都编译好但我在运行时遇到这个错误:

2016-11-03 15:17:24.649264 Modulo[25303:14858638] [General] ERROR: Setting <GLFWContentView: 0x100343da0> as the first responder for window <GLFWWindow: 0x100222540>, 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                              0x00007fff85c069a4 -[NSWindow _validateFirstResponder:] + 566
1   AppKit                              0x00007fff853f79eb -[NSWindow _setFirstResponder:] + 31
2   AppKit                              0x00007fff8549f66a -[NSWindow _realMakeFirstResponder:] + 406
3   AppKit                              0x00007fff8549f480 -[NSWindow makeFirstResponder:] + 123
4   libglfw3.3.dylib                    0x000000010011194a _glfwPlatformCreateWindow + 610
5   libglfw3.3.dylib                    0x000000010010d533 glfwCreateWindow + 428
6   Modulo                              0x00000001000010a8 main + 296
7   libdyld.dylib                       0x00007fff9c828255 start + 1
8   ???                                 0x0000000000000001 0x0 + 1)

我运行以生成此错误的代码如下:

#include <iostream>
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main(int argc, const char * argv[]) {
    //Engine Startup.
    std::cout << "<----- Engine Start-Up ----->" << std::endl;
    //Initialize GLFW.
    if(!glfwInit()) {
        std::cout << "- GLFW Failed to Initialize!" << std::endl;
        return -1;
    }
    std::cout << "+ GLFW Initialized!" << std::endl;
    //Create GLFWWindow
    GLFWwindow* window = glfwCreateWindow(640, 480, "Engine", nullptr, nullptr);
    if(!window) {
        std::cout << "- GLFWWindow Failed to Create!" << std::endl;
        glfwTerminate();
        return -1;
    }
    std::cout << "+ GLFWWindow Created!" << std::endl;
    return 0;
}

该程序按预期执行,但此错误可能会在以后成为一个问题,也会使控制台难以调试,所以我想尽早解决它!

提前感谢您,如果需要更多信息,请告诉我们! :)

2 个答案:

答案 0 :(得分:2)

我是初学者,我也遇到过这个问题。

我收到错误但成功创建了窗口。如何添加:

public void showDialog() {

        dialog = new Dialog(MainActivity.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.getWindow().setBackgroundDrawable(
                new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.setContentView(R.layout.dialog_layout);
        dialog.setCanceledOnTouchOutside(false);
        dialog.setCancelable(true);

        btn_snooze = (Button) dialog.findViewById(R.id.btn_snooze);

        btn_snooze.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.cancel();
            }
        });

        dialog.show();
    }

之前的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);

答案 1 :(得分:1)

请注意这里的讨论GLFW first responder error,这表明它是macOS Sierra中的已知错误,已在GLFW的git repo中解决,但尚未发布。