2012-08-09 171 views
1

我试图通过SDL脱身。 SDL本身工作正常,我得到了基本的Hello World设置工作。但是,尝试使用SDL_image已经让我头痛不已。我当前的代码(见下文)给我的错误“Img_Load”在此范围内未声明”在第17行SDL_image超出范围

  • 在代码:: 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; 
    } 
    

任何和所有帮助将不胜感激!

回答

1

当您遇到像这样的错误时,'IMG_Load'在您的源文件中使用库引用来确认大小写。

+0

根据文档,Img_Load是正确的情况。同样,如果我改变案例,它会给我一个不同的错误。范围错误意味着函数被定义但不可访问。 – user1586641 2012-08-09 12:07:11

+0

哦,不确定。讨厌无效地添加更多建议,但SDL_image.a被链接? – dans3itz 2012-08-09 18:34:38

+0

据我所知,SDL_image.lib被链接(它没有.a文件,只是一个.lib)。我已经将-lSDL_image标志添加到链接器设置中,搜索目录应该可以看到它,并且Code :: Blocks甚至为我提供了SDL_image函数的代码完成建议。是否有某种蛮力的方式将东西带入C++中的范围? – user1586641 2012-08-09 22:26:45