SDL2 和 C++11,未输入 main

Cav*_*ler 1 c++11 sdl-2

问题的要点是我有一个main函数来初始化 SDL,设置 OpenGL 属性(用于上下文创建)获取上下文(一个表示 OpenGL 渲染上下文(带有窗口和上下文)的类),报告OpenGL 版本的一些信息和其他基本信息,并进入在用户关闭窗口或按 ESC 时退出的常规循环。

除了我无法测试任何一个,因为main从未输入过,它似乎SDL_main.h包含一个#define替换mainSDL_main,并且实际main是从静态库中调用的。出于某种原因,它以 0 的返回值退出,而从未进入“实际”主程序。奇怪的是,除了添加 RenderingContext 类之外,从最低限度的工作(只是将一些 OpenGL 数据放入文件中)到现在,我没有对项目设置进行任何更改。从项目中删除该类并不能解决问题,我只是链接了最少量的库来实际完成链接。

是否有解决该问题的方法,或者我不知道 SDL2 可能受我的项目设置影响的某些问题?

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

jPl*_*tte 5

你必须#define SDL_MAIN_HANDLED之前#include <SDL2/SDL.h>。这可以防止 SDL 将您的 main 重新定义为 SDL_main。然后,作为主文件中的第一条语句,调用

SDL_SetMainReady();
Run Code Online (Sandbox Code Playgroud)

来源:https : //wiki.libsdl.org/SDL_SetMainReady