Я пытаюсь скомпилировать следующий код с заголовками:

#include <SDL2/SDL.h>
#include <SDL2_image/SDL_image.h>

Однако после запуска следующего make-файла:

g++ -std=c++11 src/main.cpp -lSDL2 -lSDL2_image

Я получаю следующую ошибку:

fatal error: SDL2_image/SDL_image.h: No such file or directory
#include <SDL2_image/SDL_image.h>

Какие-либо предложения? Не совсем уверен в моей установке SDL_image. Я использую это на Ubuntu.

8
mas4 27 Окт 2015 в 01:48

4 ответа

Лучший ответ

Запустите apt-file search SDL_image.h Результат сообщит вам расположение включаемого файла.

Например, было возвращено /usr/include/SDL2/SDL_image.h. Итак, если вы хотите включить SDL_image.h, пишите все после include/ между < >.

Таким образом, include должен выглядеть следующим образом:

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

См. Комментарии к вопросу для первоначального обсуждения этого решения.

1
mas4 27 Окт 2015 в 18:04

Для Windows + SDL2-2.0.8 + SDL_image-2.0.4 + Codeblocks у вас есть добавление как Runtime Binaries, так и Development Libraries в компилятор и компоновщик. В противном случае вы получите ошибку SDL2_image not found, даже при наличии dll в каталоге вашей программы, это происходит. Надеюсь, другие сочтут это полезным; Пришлось разобраться самому. Пример: если ваши ресурсы разделены, вы добавите два пути плюс стандартные SDL2 к вашему компилятору и компоновщику. Предупреждение: SDL2_image.h имеет заголовки, предполагая, что заголовки находятся в той же папке, что и каркас SDL2. Если вы получаете ошибки в заголовке изображения, включите подпапку SDL2 из SDL framework в путь, а затем вы должны включить SDL2 в программу как: include <SDL.h>, а не include <SDL2/SDL.h>.

0
dstackflow 3 Ноя 2018 в 09:23

В документации SDL говорится, что в конец строки компиляции нужно добавить lSDL_image.

    cc -o myprogram mysource.o `sdl-config --libs` -lSDL_image

Или

    gcc -o myprogram mysource.c `sdl-config --libs` -lSDL_image

Вот ссылка -> https://www.libsdl.org/projects/ docs / SDL_image / SDL_image.html Раздел 2.2 Компиляция.

Итак, для SDL2 вам просто нужно изменить lSDL_image на lSDL2_image.

1
erolrecep 5 Дек 2019 в 03:55

Эту проблему можно решить, установив пакет libsdl2-image-dev:

apt install libsdl2-image-dev
5
user6039980 21 Окт 2017 в 03:15