2015-05-16 44 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