Я новичок в SDL, и у меня есть функция bool init(). Я изучаю SDL 2.0 от lazyfoot.net в течение нескольких дней без проблем. Я по сути копировал их код, и сегодня я пытался сделать свое. (EDIT: Я знаю, что кто-то сказал, что у меня устаревший заголовочный файл. Это не тот случай, потому что с тех пор, как я установил библиотеку, я смог использовать SDL_WINDOWPOS_UNDEFINED и другие функции 2.0). По какой-то причине это не сработает.
Я использую Windows 7 Starter с кодом :: Blocks (MinGW как мой компилятор)
Когда я (пытаюсь) построить и запустить, есть красный флаг рядом с строкой 17, что и есть.
bool init() {
Вот весь исходный код.
#include <iostream>
#include <SDL.h>
const int SCREEN_WIDTH = 500;
const int SCREEN_HEIGHT = 500;
bool init();
bool loadMedia();
void quit();
int time = 5000;
SDL_Window* window = NULL;
SDL_Surface* surface = NULL;
SDL_Surface* topImage = NULL;
bool init() {
bool success = true;
if(SDL_Init(SDL_INIT_VIDEO) < 0) {
std::cout << SDL_GetError() << std::endl;
success = false;
}
else{
SDL_CreateWindow("My Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if(window == NULL) {
std::cout << SDL_GetError() << std::endl;
success = false;
}
}
return success;
}
bool loadMedia() {
bool success = true;
surface = SDL_GetWindowSurface(window);
if(surface == NULL) {
std::cout << SDL_GetError() << std::endl;
success = false;
}
else {
topImage = SDL_LoadBMP("image.bmp");
if(topImage = NULL) {
std::cout << SDL_GetError() << std::endl;
success = false;
}
else {
SDL_BlitSurface(topImage, NULL, surface, NULL);
SDL_UpdateWindowSurface(window);
SDL_Delay(time);
}
}
return success;
}
void quit() {
SDL_FreeSurface(topImage);
topImage = NULL;
SDL_DestroyWindow(window);
window = NULL;
surface = NULL;
SDL_Quit();
}
int main(int argc, char* args[]) {
if(init() == true) {
init();
if(loadMedia() == true) {
loadMedia();
}
}
quit();
return 0;
}
Вы получаете эту ошибку:
error: 'SDL_WINDOWPOS_UNDEFINED' was not declared in this scope
что означает, что вы включаете заголовки для более старой версии SDL. но SDL_WINDOWPOS_UNDEFINED
определяется в версии SDL 2.0.
Просто включите правильные заголовки, которые вы можете загрузить с официального сайта библиотеки: http://www.libsdl.org/download-2.0.php