2012-03-09 87 views
0

我的腳本無法運行,因爲它會打開一個窗口並關閉它。它在加載文件時失敗。該腳本適用於我的筆記本電腦,但不適用於我的臺式電腦,並且所有的neccecary文件都在那裏。這是關於這個功能的;在SDL中使用自定義函數加載圖像失敗

這是我的功能load_image();

SDL_Surface *load_image(std::string filename) 
{ 
    //The image that's loaded 
    SDL_Surface* loadedImage = NULL; 

    //The optimized surface that will be used 
    SDL_Surface* optimizedImage = NULL; 

    //Load the image 
    loadedImage = IMG_Load(filename.c_str()); 

    //If the image loaded 
    if(loadedImage != NULL) 
    { 
     //Create an optimized surface 
     optimizedImage = SDL_DisplayFormatAlpha(loadedImage); 

     //Free the old surface 
     SDL_FreeSurface(loadedImage); 

     //If the surface was optimized 
     if(optimizedImage != NULL) 
     { 
      //Color key surface 
      SDL_SetColorKey(optimizedImage, SDL_SRCCOLORKEY, SDL_MapRGB(optimizedImage->format, 0, 0xFF, 0xFF)); 
     } 
    } 

    //Return the optimized surface 
    return optimizedImage; 

} 

我這樣稱呼它;

sprite = load_image("sprites.png"); 

if(sprite == NULL) 
{ 
    return false; 
} 

唯一的問題是,它始終返回false,即使該文件是在那裏。問題是,這個代碼不會在我的筆記本電腦上返回false!

+0

兩臺計算機上的文件是否位於相同路徑中? – 2012-03-09 22:33:47

+0

不,但我在兩臺機器上完全重新編譯它,所以它應該沒有關係? – 2012-03-09 22:39:19

回答

2

一切似乎都很好,請嘗試使用IMG_GetError()來診斷此問題。以下是SDL文檔中的代碼,其中顯示如何:

// load sample.png into image 
SDL_Surface *image; 
image=IMG_Load("sample.png"); 
if(!image) { 
    printf("IMG_Load: %s\n", IMG_GetError()); 
    // handle error 
} 
+0

沒有libPNG> _ < – 2012-03-10 10:20:43

+0

IMG_Load:加載失敗libpng15-15.dll:%1不是有效的Win32應用程序。 – 2012-03-10 10:26:57