【问题标题】:Using GCC/Sublime to compile SDL programs on Linux在 Linux 上使用 GCC/Sublime 编译 SDL 程序
【发布时间】: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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2011-01-03
    相关资源
    最近更新 更多