调用 GLEW 函数时,进程以退出代码 -1073741515 结束
Process finished with exit code -1073741515 when calling GLEW functions
我用 C++ 编写了一个基本的 OpenGL 程序,它只打开一个 window。我现在正在尝试绘制三角形,但在调用 GLEW 函数时遇到了一些问题。这是我仅使用 OpenGL 的代码:
#include "include/glew.h"
#include "include/glfw3.h"
int main()
{
GLFWwindow* window;
if (!glfwInit())
return -1;
window = glfwCreateWindow(800, 600, "HelloWorld", nullptr, nullptr);
if (!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
unsigned int buffer;
//glGenBuffers(1, &buffer);
while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
取消注释 glGenBuffers(1, &buffer);
,这是一个 GLEW 函数,导致程序退出,代码为 -1073741515
。没有显示错误。我已经正确链接了 GLEW,以及 opengl32、gdi32、user32 和 shell32。我做错了什么?
您必须在使 OpenGL 上下文成为当前上下文后立即Initialize GLEW. Call glewInit
:
glfwMakeContextCurrent(window);
if (glewInit() != GLEW_OK)
return 0;
此外,您必须确保在运行时可以找到 DLL 文件。添加路径到 Windows path 环境变量或将 DLL 文件放在与可执行文件相同的目录中。
我通过添加 glewInit()
并将 glew32.dll 移动到我的输出目录来解决问题。我只是混淆了 lib 和 dll 文件,这就是为什么它不能更早地工作。
我用 C++ 编写了一个基本的 OpenGL 程序,它只打开一个 window。我现在正在尝试绘制三角形,但在调用 GLEW 函数时遇到了一些问题。这是我仅使用 OpenGL 的代码:
#include "include/glew.h"
#include "include/glfw3.h"
int main()
{
GLFWwindow* window;
if (!glfwInit())
return -1;
window = glfwCreateWindow(800, 600, "HelloWorld", nullptr, nullptr);
if (!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
unsigned int buffer;
//glGenBuffers(1, &buffer);
while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
取消注释 glGenBuffers(1, &buffer);
,这是一个 GLEW 函数,导致程序退出,代码为 -1073741515
。没有显示错误。我已经正确链接了 GLEW,以及 opengl32、gdi32、user32 和 shell32。我做错了什么?
您必须在使 OpenGL 上下文成为当前上下文后立即Initialize GLEW. Call glewInit
:
glfwMakeContextCurrent(window);
if (glewInit() != GLEW_OK)
return 0;
此外,您必须确保在运行时可以找到 DLL 文件。添加路径到 Windows path 环境变量或将 DLL 文件放在与可执行文件相同的目录中。
我通过添加 glewInit()
并将 glew32.dll 移动到我的输出目录来解决问题。我只是混淆了 lib 和 dll 文件,这就是为什么它不能更早地工作。