glfwCreateWindow returns NULL

glfwCreateWindow returns NULL

本文关键字:NULL returns glfwCreateWindow      更新时间:2023-10-16

我一直在Visual Studio 2015中使用C++进行一个小型openGL项目。我正在使用GLFW和GLEW。

在遇到一些硬件问题(硬盘)后,我在笔记本电脑上重新安装了Windows。现在我尝试继续我的项目,该项目以前运行/调试没有问题,但现在我收到错误。

glfwCreateWindow() 返回 NULL(即使没有任何 glfwWindowHints),glewInit() 也会失败。

我以为这是因为我的驱动程序,但我已经更新了我的集成显卡(英特尔高清 4000)和高性能 Nvidia GPU 的驱动程序。

使用 openGL 扩展查看器,我看到集成卡支持 OpenGL 4.0,Nvidia GPU 支持 4.4。

这个项目相当大,所以为了消除问题,我创建了一个基于GLFW和GLEW的简单三角形代码,但我仍然从glfwWindowCreate()得到错误。

我已经用谷歌搜索过,除了更新驱动程序之外,我找不到其他解决方案。什么会导致此故障?

你是否正确初始化了 glfw?

if(!glfwInit()){
    return -1;
}

那么一切都应该没事。

我遇到了同样的问题,glfwInit()成功但glfwCreateWindow返回 NULL。但是我犯了一个错误,为主要版本给出 0 而不是次要版本,如下所示。

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 0);

相反

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);

确保您已正确提供版本号。

只是发布我的解决方案;我犯了一个愚蠢的错误,我把我的.dll文件放在不同的文件夹中(带有exe文件)。它们应该在项目文件夹中,如果我没有在我猜的项目设置中指定任何其他内容。

我没有注意到的原因是,如果我完全删除了dll文件,我会收到一条dll错误消息,但是通过将dll保留在.exe文件夹中,我无法启动GLFW或glew。