gpt4 book ai didi

c++ - 为什么 SDL_image 不工作

转载 作者:行者123 更新时间:2023-11-30 01:30:53 24 4
gpt4 key购买 nike

我是 C++ 和 SDL 的新手;我正在尝试使用此处的说明添加新的 SDL 扩展库:http://www.lazyfoo.net/SDL_tutorials/lesson03/windows/devcpp/index.php

但是我得到了这些错误:

3 C:\Documents and Settings\Edmund\My Documents\C++\myprojects\SDL\SDLevent.cpp SDL/SDL_image.h: 没有这样的文件或目录。

C:\Documents and Settings\Edmund\My Documents\C++\myprojects\SDL\SDLevent.cpp 在函数`SDL_Surface* load_image(std::string)'中:

28 C:\Documents and Settings\Edmund\My Documents\C++\myprojects\SDL\SDLevent.cpp `IMG_Load' undeclared(先用这个函数)

然后是一堆不合格的id。

这是我的代码:

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"

#include <string>

//Screen attributes
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

//The surfaces
SDL_Surface *image = NULL;
SDL_Surface *screen = NULL;

//The event structure that will be used
SDL_Event event;

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
loadedImage = IMG_Load( filename.c_str() );

//If the image loaded
if( loadedImage != NULL )
{
//Create an optimized image
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 )
{
//Temporary rectangle to hold the offsets
SDL_Rect offset;

//Get the 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( "Event test", NULL );

//If everything initialized fine
return true;
}

bool load_files()
{
//Load the image
image = load_image( "astyle.bmp" );

//If there was an error in loading the image
if( image == NULL )
{
return false;
}

//If everything loaded fine
return true;
}

void clean_up()
{
//Free the image
SDL_FreeSurface( image );

//Quit SDL
SDL_Quit();
}

//Initialize
if( init() == false )
{
return 1;
}

//Load the files
if( load_files() == false )
{
return 1;
}

//Apply the surface to the screen
apply_surface( 0, 0, image, screen );

//Update the screen
if( SDL_Flip( screen ) == -1 )
{
return 1;
}

//While the user hasn't quit
while( quit == false )
{

//While there's an event to handle
while( SDL_PollEvent( &event ) )
{

//If the user has Xed out the window
if( event.type == SDL_QUIT )
{
//Quit the program
quit = true;
}
}
}

//Free the surface and quit SDL
clean_up();

return 0;
}

它与教程中的内容几乎相同,因此代码应该没有问题。我完全按照有关 Lazy foo 的说明进行操作,我已将所有文件放在正确的位置并链接到它们,所以我不知道自己做错了什么。

最佳答案

您的编译器找不到 SDL/SDL_image.h header ,这会导致所有这些“未声明”错误。

也许你跳过了Step 2在链接的说明中。

关于c++ - 为什么 SDL_image 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com