SDL2 和 C++11,主要未输入
SDL2 and C++11, main not entered
问题的要点是我有一个 main
函数来初始化 SDL,设置 OpenGL 属性(用于上下文创建)获取上下文(一个 class 表示一个 OpenGL 渲染上下文(window 和上下文一起),报告一些关于 OpenGL 版本的信息和其他基本信息,并进入通常的循环,该循环在用户关闭 window 或按 ESC 时退出。
除了我无法测试任何内容,因为从未输入 main
,看来 SDL_main.h
包含一个 #define
,它用 [=15] 替换了 main
=],而实际的 main
是从静态库中调用的。由于某种原因,它以 return 值为 0 退出,而没有进入 "actual" main。奇怪的是,除了添加 RenderingContext class 之外,从最低限度工作(只是将一些 OpenGL 数据放入文件中)到现在,我没有对项目设置进行任何更改。从项目中删除 class 并不能解决问题,我只是链接了最少量的库以实际完成链接。
是否有任何问题的解决方案,或者一些我不知道的 SDL2 问题可能会受到我的项目设置的影响?
代码可以在here中找到,大部分在src目录下,main.cpp在顶层。
我遇到了完全相同的问题。确保您使用的不是不完整的主版本:
int main(){
}
改用这个:
int main( int arc, char* argv[] ){
}
您必须在 #include <SDL2/SDL.h>
之前 #define SDL_MAIN_HANDLED
。这可以防止 SDL 将您的 main 重新定义为 SDL_main。然后,作为 main 中的第一条语句,调用
SDL_SetMainReady();
问题的要点是我有一个 main
函数来初始化 SDL,设置 OpenGL 属性(用于上下文创建)获取上下文(一个 class 表示一个 OpenGL 渲染上下文(window 和上下文一起),报告一些关于 OpenGL 版本的信息和其他基本信息,并进入通常的循环,该循环在用户关闭 window 或按 ESC 时退出。
除了我无法测试任何内容,因为从未输入 main
,看来 SDL_main.h
包含一个 #define
,它用 [=15] 替换了 main
=],而实际的 main
是从静态库中调用的。由于某种原因,它以 return 值为 0 退出,而没有进入 "actual" main。奇怪的是,除了添加 RenderingContext class 之外,从最低限度工作(只是将一些 OpenGL 数据放入文件中)到现在,我没有对项目设置进行任何更改。从项目中删除 class 并不能解决问题,我只是链接了最少量的库以实际完成链接。
是否有任何问题的解决方案,或者一些我不知道的 SDL2 问题可能会受到我的项目设置的影响?
代码可以在here中找到,大部分在src目录下,main.cpp在顶层。
我遇到了完全相同的问题。确保您使用的不是不完整的主版本:
int main(){
}
改用这个:
int main( int arc, char* argv[] ){
}
您必须在 #include <SDL2/SDL.h>
之前 #define SDL_MAIN_HANDLED
。这可以防止 SDL 将您的 main 重新定义为 SDL_main。然后,作为 main 中的第一条语句,调用
SDL_SetMainReady();