如何使用 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 中,也许实际的库没有安装在正确的开发位置?
最佳答案
GCC 的错误是由调用 SDL2 中不存在的函数引起的。将以前的 SDL Video 调用更改为:
SDL_CreateWindow(
"Window",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
640,
480,
SDL_WINDOW_OPENGL
);
是在 SDL 2 中创建窗口的正确方法;
跟随 GCC 命令:
gcc main.cpp -o main -lSDL2
正确编译代码并使其可执行。感谢您指出这一点@HolyBlackCat
关于c++ - 在Linux上使用GCC/Sublime编译SDL程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271411/