C++ 使用SDL_CreateWindow时出现SDL OpenGL分段错误

C++ 使用SDL_CreateWindow时出现SDL OpenGL分段错误,c++,opengl,sdl-2,C++,Opengl,Sdl 2,我有一个奇怪的问题,它突然出现在我正在从事的所有项目中。我使用C++、SDL2和OpenGL,而我的It main中发生的第一件事就是用下面的OpenGL标志创建SDL窗口: int main( int argc, char* args[] ) { //Minor stuff here e.g. initialising SDL mainwindow = SDL_CreateWindow("...", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_

我有一个奇怪的问题,它突然出现在我正在从事的所有项目中。我使用C++、SDL2和OpenGL,而我的It main中发生的第一件事就是用下面的OpenGL标志创建SDL窗口:

int main( int argc, char* args[] )
{
    //Minor stuff here e.g. initialising SDL
    mainwindow = SDL_CreateWindow("...", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL);
}
由于某种原因,这已开始导致分段错误。如果我将标志从SDL_WINDOW_OPENGL更改为其他任何内容,它确实会创建一个窗口,但由于缺少OPENGL上下文来执行任何操作,因此显然很快就会失败。我甚至去掉了除SDL和OpenGL初始化内容之外的所有代码,但它仍然失败,并出现segfault错误

本期从今天开始,跨越两个共享相同基本int主结构的项目。这让我相信这不是一个代码问题(主要是因为代码没有实际更改),而是我的设置/环境出了问题。到目前为止,我已尝试了以下方法,但均无效:

  • 重新下载最新的SDL库
  • 重新下载最新的GLEW库
  • 重新安装的代码块
关于a)是什么导致了这一问题,b)我应该从哪里着手解决它

谢谢


内森

就像生活中的许多其他问题一样,答案是司机。某种类型的系统范围更新会干扰图形渲染任何类型OpenGL的能力。直接下载并安装最新的图形驱动程序就解决了这个问题。

就像生活中的许多其他问题一样,答案是驱动程序。某种类型的系统范围更新会干扰图形渲染任何类型OpenGL的能力。直接下载并安装最新的图形驱动程序修复了它。

您确实调用了“SDL_Init(SDL_Init_视频)”?我调用了SDL_Init(SDL_Init_EVERYTHING)-也尝试了SDL_Init_视频(无更改),并且还验证了SDL已使用SDL_WasInit正确初始化-似乎都很好您确实调用了“SDL_Init(SDL_Init_视频)”?我调用了SDL_Init(SDL_INIT_EVERYTHING)-还尝试了SDL_INIT_视频(无更改),还验证了SDL已使用SDL_WasInit正确初始化-在我的情况下,一切似乎都很好,这是因为我的程序中存在
close()
函数。刚刚将其重命名为
close1()
一切正常。奇怪。就我而言,这是因为我的程序中存在
close()
函数。只是将其重命名为
close1()
,一切正常。奇怪。