SDL_image выходит за рамки

Я пытаюсь оторваться от земли с помощью SDL. SDL сам по себе работает нормально, у меня работает базовая установка Hello World. Однако попытка использовать SDL_image доставила мне массу головной боли. Мой текущий код (ниже) дает мне ошибку «Img_Load» не был объявлен в этой области» в строке 17.

  • Мои настройки компоновщика в Code::Blocks выглядят так: "-lmingw32 -lSDLmain -lSDL -lSDL_image"
  • Каталоги поиска настроены правильно
  • Необходимые DLL находятся в папке с EXE.

    include iostream
    include fstream
    include "SDL/SDL.h"
    include "SDL_image.h"
    
    using namespace std;
    const int SCREEN_WIDTH = 600;
    const int SCREEN_HEIGHT = 600;
    
    int main(int argc, char *argv[]){
        SDL_Init(SDL_INIT_EVERYTHING);
    
        SDL_Surface* hello = NULL;
        SDL_Surface* screen = NULL;
    
        screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_SWSURFACE);
        hello = Img_Load("img\\hello world.png");
    
        if(!hello) //check that the load worked
            cout<<"error";
    
        SDL_BlitSurface(hello, NULL, screen, NULL); //draw image
        SDL_Flip(screen);
    
        SDL_Delay(2000);
    
        SDL_FreeSurface(hello); //closing down
        SDL_Quit();
    
    return 0;
    }
    

Любая помощь будет принята с благодарностью!


person user1586641    schedule 09.08.2012    source источник


Ответы (1)


'IMG_Load' подтверждает случай в исходном файле со ссылкой на библиотеку, когда вы сталкиваетесь с такими ошибками.

person dans3itz    schedule 09.08.2012
comment
Img_Load - правильный случай в соответствии с документацией. Кроме того, это дает мне другую ошибку, если я меняю регистр. Ошибка области видимости подразумевает, что функция определена, но просто недоступна. - person user1586641; 09.08.2012
comment
О, тогда не уверен. Ненавижу добавлять больше предложений без эффекта, но связан ли SDL_image.a? - person dans3itz; 09.08.2012
comment
Насколько я могу судить, подключается SDL_image.lib (у него не было файла .a, только .lib). Я добавил флаг -lSDL_image в настройки компоновщика, каталоги поиска должны его увидеть, а Code::Blocks даже дает мне предложения по завершению кода для функций SDL_image. Есть ли какой-то способ грубой силы, чтобы привести вещи в область видимости на С++? - person user1586641; 10.08.2012