sdl-image – SDL_image的IMG_Load不起作用

sdl-image – SDL_image的IMG_Load不起作用,第1张

概述我正在使用IMG_Load()来加载png文件,但它根本无法正常工作. loaded Image = IMG_Load(filename.c_str());在这句话之后,loadedImage仍为NULL,没有发生错误. PS:我使用的是VS C 2008,png文件位于开发文件夹中.这是我的代码:(这正是Lazy Foo的样子) //The headers#include "SDL.h"#i 我正在使用img_Load()来加载png文件,但它根本无法正常工作.
loaded Image = img_Load(filename.c_str());在这句话之后,loadedImage仍为NulL,没有发生错误.
PS:我使用的是VS C 2008,png文件位于开发文件夹中.这是我的代码:(这正是Lazy Foo的样子)

//The headers#include "SDL.h"#include "SDL_image.h"#include <string>#pragma comment( linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )//Screen attributesconst int SCREEN_WIDTH = 640;const int SCREEN_HEIGHT = 480;const int SCREEN_BPP = 32;//The surfacesSDL_Surface *image = NulL;SDL_Surface *screen = NulL;SDL_Surface *load_image( std::string filename ){    //The image that's loaded    SDL_Surface* loadedImage = NulL;    //The optimized image that will be used    SDL_Surface* optimizedImage = NulL;    //Load the image using SDL_image loadedImage = img_Load(filename.c_str());    //If the image loaded    if( loadedImage != NulL )    {        //Create an optimized image  //cout<<"Flag";        optimizedImage = SDL_displayFormat( loadedImage );        //Free the old image        SDL_FreeSurface( loadedImage );    }    //Return the optimized image    return optimizedImage;}voID apply_surface( int x,int y,SDL_Surface* source,SDL_Surface* destination ){    //Rectangle to hold the offsets    SDL_Rect offset;    //Get offsets    offset.x = x;    offset.y = y;    //Blit the surface    SDL_BlitSurface( source,NulL,destination,&offset );}bool init(){    //Initialize all SDL subsystems    if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )    {        return false;    }    //Set up the screen    screen = SDL_SetVIDeoMode( SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP,SDL_SWSURFACE );    //If there was an error in setting up the screen    if( screen == NulL )    {        return false;    }    //Set the window caption    SDL_WM_SetCaption( "PNG test",NulL );    //If everything initialized fine    return true;}voID clean_up(){    //Free the surface    SDL_FreeSurface( image );    //Quit SDL    SDL_Quit();}int main( int argc,char* args[] ){    //Initialize    if( init() == false )    {        return 1;    }    //Load the image    image = load_image( "look.png" );    //If there was a problem in loading the image    if( image == NulL )    {        return 5;    }    //Apply the surface to the screen    apply_surface( 0,image,screen );    //Update the screen    if( SDL_Flip( screen ) == -1 )    {        return 1;    }    //Wait 2 seconds    SDL_Delay( 2000 );    //Free the surface and quit SDL    clean_up();    return 0;}

输出返回5.

解决方法 我的错. 我只是将SDL_image.dll复制到exe floder. 我还应该复制zlib1.dll和libpng12-0.dll 实际上,所有的dll都是需要的,因为如果没有这样的dll,程序将不会给出任何错误提示,这是令人困惑的. 总结

以上是内存溢出为你收集整理的sdl-image – SDL_image的IMG_Load不起作用全部内容,希望文章能够帮你解决sdl-image – SDL_image的IMG_Load不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1083690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存