2012-05-12 41 views
0

我有我的游戏工作,然后决定尝试使用以下tutorial实现菜单。C++ SDL分段错误

我没有使用教程来创建他在之前的教程中创建的游戏。

每当我编译并运行该程序时,它会短暂加载,然后在code::blocks的生成日志中关闭并说Process terminated with status 3 (0 minutes, 1 seconds)

更新:我已经更新了代号为引擎收录链接,我现在有,我现在在调试器得到的错误是

Program received signal SIGSEGV, Segmentation fault. 
In TTF_SizeUNICODE() (E:\game\pong\bin\Debug\SDL_ttf.dll) 
At E:\game\pong\main.cpp:27 

更新2:看来我embarrasingly没有了字体安装。我已经安装了字体&,现在调试器到达了屏幕显示“开始”和“退出”字体的位置,但是,在执行此操作后,程序停止运行,调试器中没有错误,以及如果我正常运行程序,它会在文本显示后停止响应,这很奇怪。在从code::blocks启动程序之后强制关闭窗口之后,它就会返回:Process terminated with status -805306369 (0 minutes, 13 seconds)

更新3:解决。

+1

请自行缩小您的问题,必要时使用调试器,如果仍然卡住,请将内部_relevant_代码嵌入此处。 – Mat

回答

3

在将它传递到showMenu(第224行)之前,您并未初始化screen(第220行)。 AFAIK SDL_SetVideoMode返回可用于您的screen的表面。

+0

恐怕我不完全明白,我已经移动了 “SDL_Surface * screen; TTF_Font * font;” 到showMenu之前,但至于SetVideoMode,我应该复制我现有的“SDL_SetVideoMode(600,400,32,SDL_OPENGL);”从第172行到第12行之前的某处(showMenu之前)?非常感谢您的回复!感谢您的帮助! :) –

+0

我说初始化不声明。第168行应该是'screen = SDL_SetVideoMode(600,400,32,SDL_OPENGL);' –

+0

我已经改变了第168行,但错误仍然存​​在。如果您想查看,我已经将pastebin链接更新为当前编码:)调试器仍然在同一行发出相同的错误。 “程序接收到的信号SIGSEGV,分段错误 在E:\ game \ pong \ main.cpp:31” 感谢您的帮助,我对C++很陌生,你可能会说,我是还不是很好,但希望变得更好! –