2012-08-09 170 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