c++ - 在Linux上使用GCC/Sublime编译SDL程序

标签 c++ c gcc sublimetext2 sdl

如何使用 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/

相关文章:

objective-c - GNU Objective-C 运行时技巧

macos - 在 Mac OS X 上组装项目时出现错误 "no such instruction"

c++ - 该程序的输出是什么?

c++文件夹仅搜索

c++ - 如何将二维数组传递给函数以及如何调用它

mysql - C编译器找不到头文件

c - 找出任何数字的第一位和最后一位的总和

c++ - std::algorithm::sort 的比较器?

c - 客户端如何使用预存的服务器证书进行SSL握手?

c - 重定向到 file.txt 时 fork() 的意外输出