2015-05-16 64 views
0

如何使用GCC或Sublime IDE在Linux上編譯基於SDL的項目?使用GCC/Sublime在Linux上編譯SDL程序

gcc main.cpp -o main -lSDL2 

我已經嘗試這樣做,我只是得到,似乎被人指指點點的想法,無論是程序沒有指向庫的正確方式或編譯器不能識別庫的錯誤。在Sublime上,我基本上通過爲SDL創建了自己的構建系統來完成同樣的任務,但實際上並沒有做任何事情。我可能會做錯什麼?

{ 
    "cmd" : [ "gcc", "$file", "-o", "-lSDL2" ] 
{ 

我希望這個問題是這樣的堆疊適當,它可以被認爲Linux的工具,但在Linux和Unix堆棧不建議除非它們包含shell腳本編程問題。

這裏只是基本的Hello World,我測試(顯然不是很正確格式化,但你的想法。):

#include <SDL2/SDL.h> 

int main(int argc, char *argv[]) { 
int win = 1; 
SDL_Event event; 

SDL_Init(SDL_INIT_EVERYTHING); 

SDL_WM_SetCaption("Window", NULL); 
SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE); 
while (win) { 
    SDL_WaitEvent(&event); 
    if (event.type == SDL_QUIT) 
     win = 0; 
} 
SDL_Quit(); 
return 0; 
} 

當程序被編譯我用張貼在海灣合作委員會的命令頂部和得到這些錯誤:

main.cpp: In function ‘int main(int, char**)’: 
main.cpp:19:37: error: ‘SDL_WM_SetCaption’ was not declared in this scope 
SDL_WM_SetCaption("Window", NULL); 
           ^
main.cpp:20:36: error: ‘SDL_HWSURFACE’ was not declared in this scope 
SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE); 
           ^
main.cpp:20:49: error: ‘SDL_SetVideoMode’ was not declared in this scope 
SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE); 
              ^

我也試圖直接指向頭文件與GCC:

gcc main.cpp -o main -l/usr/include/SDL2 

我檢查過以確保頭文件位於usr/include/SDL2中,也許實際的庫沒有安裝在正確的開發位置?

+0

您能告訴我們您遇到的實際錯誤嗎? – Ixrec

+0

有些像這樣:main.c:20:36:錯誤:'SDL_HWSURFACE'未聲明(首次在此函數中使用) SDL_SetVideoMode(800,600,32,SDL_HWSURFACE); –

+0

和其他像這樣的@Ixrec main.cpp:20:49:錯誤:'SDL_SetVideoMode'未在此範圍內聲明 SDL_SetVideoMode(800,600,32,SDL_HWSURFACE); –

回答

1

來自GCC的錯誤是由SDL2中不存在的調用函數造成的。將以前的SDL視頻呼叫更改爲:

SDL_CreateWindow(
"Window", 
SDL_WINDOWPOS_UNDEFINED, 
SDL_WINDOWPOS_UNDEFINED, 
640, 
480, 
SDL_WINDOW_OPENGL 
); 

是在SDL 2中創建窗口的正確方法;

與GCC的命令以下:

gcc main.cpp -o main -lSDL2 

正確編譯的代碼,因此使得它的可執行文件。感謝您指出這一點@HolyBlackCat