SDL2和C++11,未输入main

SDL2和C++11,未输入main,c++11,sdl-2,C++11,Sdl 2,问题的要点是,我有一个主函数,它初始化SDL,为上下文创建设置OpenGL属性,创建一个上下文,创建一个表示OpenGL渲染上下文的类,同时包含窗口和上下文,报告OpenGL版本的一些信息和其他基本信息,并进入用户关闭窗口或按ESC键时退出的常规循环 除了我无法测试其中任何一个之外,因为从未输入main,SDL_main.h似乎包含一个用SDL_main替换main的定义,并且实际的main是从静态库调用的。出于某种原因,它以返回值0退出,而从未进入实际的main。奇怪的是,除了添加Render

问题的要点是,我有一个主函数,它初始化SDL,为上下文创建设置OpenGL属性,创建一个上下文,创建一个表示OpenGL渲染上下文的类,同时包含窗口和上下文,报告OpenGL版本的一些信息和其他基本信息,并进入用户关闭窗口或按ESC键时退出的常规循环

除了我无法测试其中任何一个之外,因为从未输入main,SDL_main.h似乎包含一个用SDL_main替换main的定义,并且实际的main是从静态库调用的。出于某种原因,它以返回值0退出,而从未进入实际的main。奇怪的是,除了添加RenderingContext类之外,我没有改变项目设置,从它最简单的工作时只是将一些OpenGL数据放入一个文件到现在。从项目中删除该类并不能解决问题,我只是将最小数量的库链接到实际完成链接

有没有解决这个问题的方法,或者我不知道SDL2的一些问题,这些问题可能会受到我的项目设置的影响


代码可以找到,大部分在src目录下,main.cpp位于顶层。

我也有同样的问题。确保您没有使用不完整的主版本:

int main(){
}
改用这个:

int main( int arc, char* argv[] ){
}

我也有同样的问题。确保您没有使用不完整的主版本:

int main(){
}
改用这个:

int main( int arc, char* argv[] ){
}
在包含之前,必须定义SDL_MAIN_HANDLED。这将防止SDL将您的main重新定义为SDL_main。然后,作为你的第一句话,打电话给

SDL_SetMainReady();
来源:

在包含之前,您必须定义SDL\u MAIN\u HANDLED。这将防止SDL将您的main重新定义为SDL_main。然后,作为你的第一句话,打电话给

SDL_SetMainReady();

来源:

也许这会有帮助?我不知道为什么,但这解决了问题。我之所以困惑,是因为它以前运行得很好。好吧,我会为它创建一个答案,这样这个问题就可以被标记为已解决。也许这会有所帮助?我不知道为什么,但这解决了问题。我只是感到困惑,因为它以前运行得很好。好吧,我会为它创建一个答案,这样这个问题就可以被标记为已解决。这几乎就是我所拥有的。我只是将它改为使用char*argv[]符号,以防影响它,但它不会改变结果。这几乎就是我所拥有的。我只是将其更改为使用char*argv[]符号,以防这会影响它,但它不会更改结果。