用C语言编译SDL2的问题

时间:2016-01-12 08:10:06

标签: c gcc linker sdl sdl-2

我一直在尝试编译一个简单的程序来测试SDL2,但出于某种原因,当我尝试这样做时,编译器说SDL_Window是一个未知的类型。如果有人能告诉我我做错了什么,我将不胜感激。(我的操作系统是Ubuntu linux)这是完整的输出:

// Example program:
// Using SDL2 to create an application window

#include "SDL/SDL.h"
#include <stdio.h>

int main(int argc, char* argv[]) {

    SDL_Window *window;                    // Declare a pointer

    SDL_Init(SDL_INIT_VIDEO);              // Initialize SDL2

    // Create an application window with the following settings:
    window = SDL_CreateWindow(
        "An SDL2 window",                  // window title
        SDL_WINDOWPOS_UNDEFINED,           // initial x position
        SDL_WINDOWPOS_UNDEFINED,           // initial y position
        640,                               // width, in pixels
        480,                               // height, in pixels
        SDL_WINDOW_OPENGL                  // flags - see below
    );

    // Check that the window was successfully created
    if (window == NULL) {
        // In the case that the window could not be made...
        printf("Could not create window: %s\n", SDL_GetError());
        return 1;
    }

    // The window is open: could enter program loop here (see SDL_PollEvent())

    SDL_Delay(3000);  // Pause execution for 3000 milliseconds, for example

    // Close and destroy the window
    SDL_DestroyWindow(window);

    // Clean up
    SDL_Quit();
    return 0;
}

这也是源代码。它来自API文档:

gcc thin.c -o test -Wall -lSDL2

最后这里是我发出的编译代码的命令:

sys.stdout

谢谢

2 个答案:

答案 0 :(得分:4)

SDL/SDL.h是SDL 1.2或之前的版本。 SDL2标头为SDL2/SDL.h

这反映了错误消息 - SDL 1.2没有SDL_Window类型或许多其他内容。

可能更便携的方式只包括SDL.h并手动输入包含编译器的路径(带有-I标志,如果是gcc),或者使用sdl2-config --cflags

答案 1 :(得分:0)

似乎包含的路径不正确。 确保使用-I开关并设置SDL2包含的路径