【发布时间】:2015-07-28 01:56:44
【问题描述】:
如何使用 GCC 或 Sublime IDE 在 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;
}
编译程序时,我使用顶部发布的 GCC 命令并收到以下错误:
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 中,可能实际库没有安装在正确的开发位置?
【问题讨论】:
-
您能告诉我们您遇到的实际错误吗?
-
像这样的一些:main.c:20:36: error: ‘SDL_HWSURFACE’ undeclared (first use in this function) SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
-
和其他类似的 @Ixrec main.cpp:20:49: 错误:'SDL_SetVideoMode' 未在此范围内声明 SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
-
我从未使用过 SDL,但在库符号上获得“未声明”通常意味着您忘记包含该库的头文件(我相信这是使用命令行 gcc 的 -i 选项完成的) .
-
它是在编译时通过gcc声明的,我查看了gcc文档,似乎它是在正确的地方声明的。我也试过 -lSDL 和 -lSDL2 @Ixrec
标签: c++ c gcc sublimetext2 sdl