SDL2 и SDL_image, переопределение и конфликтующие объявления при компиляции
Я пытаюсь использовать SDL_image
библиотека, чтобы я мог отобразить .png
файл в окне, сделанном с использованием SDL2
библиотека. Моя проблема в том, что когда я компилирую код, я получаю много ошибок о замедлении и прочем в заголовочных файлах SDL. Я использую Eclipse на Ubuntu LTS 16.04
Я не совсем уверен, в чем проблема и как я могу решить эту проблему, так что шаг за шагом, что, почему и как я могу полностью понять, было бы здорово
Ответ на вопрос есть в комментариях к этому посту.
Вот мои ошибки
In file included from /usr/include/SDL2/SDL.h:52:0,
from /usr/include/SDL2/SDL_image.h:27,
from temp.cpp:12:
/usr/include/SDL2/SDL_render.h:116:3: error: conflicting declaration
‘typedef enum SDL_RendererFlip SDL_RendererFlip’
} SDL_RendererFlip;
^
In file included from /usr/local/include/SDL2/SDL.h:52:0,
from temp.cpp:11:
/usr/local/include/SDL2/SDL_render.h:116:3: note: previous declaration
as
‘typedef enum SDL_RendererFlip SDL_RendererFlip’
} SDL_RendererFlip;
^
In file included from /usr/include/SDL2/SDL.h:57:0,
from /usr/include/SDL2/SDL_image.h:27,
from temp.cpp:12:
/usr/include/SDL2/SDL_version.h:51:16: error: redefinition of ‘struct
SDL_version’
typedef struct SDL_version
`
Вот мой код
#include <iostream>
#include <string>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <stdio.h>
using namespace std;
int main(int argc, char* argv[])
{
SDL_Window* window;
SDL_Renderer* renderer;
SDL_Surface* surface;
SDL_Texture* texture;
SDL_Init(SDL_INIT_VIDEO);
IMG_Init(IMG_INIT_JPG);
window = SDL_CreateWindow(
"SDL Window",
100,
600,
1200,
700,
SDL_WINDOW_OPENGL);
if (window == NULL)
{
cout << "Could not create window: \n" << SDL_GetError() <<
endl;
return 1;
}
renderer = SDL_CreateRenderer (window, -1, 0);
surface = IMG_Load("introtext.png");
texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_RenderCopy(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
SDL_Delay(5000);
SDL_DestroyTexture(texture);
SDL_FreeSurface(surface);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
IMG_Quit();
SDL_Quit();
return 0;
}