2012-05-12 42 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++很陌生,你可能會說,我是還不是很好,但希望變得更好! –