[SDL] Strange Compiling Error

Started by
9 comments, last by Dave Hunt 17 years, 9 months ago
Hello everybody! Im pretty new to SDL, so i follow tutorials from Lazy_foo, they are pretty good. However, when i try to compile this, gathered from the 2nd tutorial, i got compile errors:
Quote:1>------ Build started: Project: SDLLessons, Configuration: Debug Win32 ------ 1>Compiling... 1>main.cpp 1>c:\documents and settings\roy\mijn documenten\visual studio 2005\projects\sdllessons\sdllessons\main.cpp(16) : error C2653: 'stf' : is not a class or namespace name 1>c:\documents and settings\roy\mijn documenten\visual studio 2005\projects\sdllessons\sdllessons\main.cpp(16) : error C2065: 'string' : undeclared identifier 1>c:\documents and settings\roy\mijn documenten\visual studio 2005\projects\sdllessons\sdllessons\main.cpp(17) : error C2146: syntax error : missing ')' before identifier 'filename' 1>Build log was saved at "file://c:\Documents and Settings\roy\Mijn documenten\Visual Studio 2005\Projects\SDLLessons\SDLLessons\Debug\BuildLog.htm" 1>SDLLessons - 3 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I already looked there, but i can't find the problem. Here is the source for any need:

//The headers
#include "SDL/SDL.h"
#include <string>
using namespace std;

//Attributes of the screen
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

//Surfaces that will be used
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;

//Load the images
SDL_Surface *load_image(string filename)
{
	//Temporary storage for the image that's loaded
	SDL_Surface* loadedImage = NULL;
	
	//The optimized image that will be used
	SDL_Surface* optimizedImage = NULL;
	
	//Load the image
	loadedImage = SDL_LoadBMP(filename.c_str());

	if(loadedImage != NULL)
	{
		//Optimized Image Creating
		optimizedImage = SDL_DisplayFormat(loadedImage);
		SDL_FreeSurface(loadedImage);
	}
	
	return optimizedImage;
}

void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination)
{
	//Make a temporary rectangle to hold the offsets
	SDL_Rect offset;
	
	//Give the offsets to the rectangle
	offset.x = x;
	offset.y = y;
	
	//Blit the surface
	SDL_BlitSurface(source, NULL, destination, &offset);
}

int main(int argc, char* args[])
{
	//Initialize all SDL subsystems
	if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
	{
		return 1;
	}

	//Set up the screen
	screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
	
	//If there was in error in setting up the screen
	if(screen == NULL)
	{
		return 1;
	}

	//Set the window caption
	SDL_WM_SetCaption( "Hello World blaat", NULL );

	//Load the images
	message = load_image("hello_world.bmp");
	background = load_image("background.bmp");

	//Apply the background to the screen
	apply_surface(0, 0, background, screen);

	//Apply the message to the screen
	apply_surface(180, 140, message, screen);

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

	//Wait 2 seconds
	SDL_Delay(2000);

	//Free the surfaces
	SDL_FreeSurface(message);
	SDL_FreeSurface(background);
	
	//Quit SDL
	SDL_Quit();
	
	//Return
	return 0;
}

I hope anyone can help Moffia [Edited by - Moffia on June 26, 2006 2:00:41 AM]
BLAAATZOR!!!! o._.0
Advertisement
1° Post the real code next time, preferably using [source] tags.

2° Use std::string instead of stf::string.
The code you posted seems to have been fixed (by means of a 'using', but I forgive you) - is there still something borking?
but the problem is, i didnt use any stf in the code. i use the using namespace std, and also tried std:: for the needed things.
but i still get the problem. thats why i think it's weird and posted the source-code to let you guys have a check.

oh and btw, sorry about the wrong form, im used to use [.code]code[./code]
BLAAATZOR!!!! o._.0
Then that must not be the source file your compiler is complaining about. Double check to make sure you did not add another source file to the project or anything. What compiler are you using?
Visual Studio 2005 EE, C++
BLAAATZOR!!!! o._.0
I got a similar problem, and also, i'm pretty noob about SDL.

I already did everything to set up SDL and OpenGL on VisualC++ 7 (aka Visual Studio 2003), but still, the compiler trows me this error

Quote:c:\Documents and Settings\Martha\My Documents\Visual Studio Projects\Pruebas SDL\Pruebas SDL.cpp(26): fatal error C1010: unexpected end of file while looking for precompiled header directive



Here is the code

#include <SDL.h>#include <stdio.h>int main(int argc, char argv[]){        printf("Initializing SDL.\n");        /* Initialize defaults, Video and Audio */    if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) {         printf("Could not initialize SDL: %s.\n", SDL_GetError());        exit(-1);    }    printf("SDL initialized.\n");    printf("Quiting SDL.\n");        /* Shutdown all subsystems */    SDL_Quit();        printf("Quiting....\n");    exit(0);}


I had already double cheked everything but I can't find were the problem is, and I'm pretty positive is becuz the header file is not initialized correctly, or something like that
Quote:Original post by Kristen
I got a similar problem, and also, i'm pretty noob about SDL.

I already did everything to set up SDL and OpenGL on VisualC++ 7 (aka Visual Studio 2003), but still, the compiler trows me this error

Quote:c:\Documents and Settings\Martha\My Documents\Visual Studio Projects\Pruebas SDL\Pruebas SDL.cpp(26): fatal error C1010: unexpected end of file while looking for precompiled header directive



Here is the code

*** Source Snippet Removed ***

I had already double cheked everything but I can't find were the problem is, and I'm pretty positive is becuz the header file is not initialized correctly, or something like that


I dont use visual c, but I know of the error. You need to either include something named similar to stdafx.h first, or disable precompiled headers.

cheers.
@Kristen: Instead of using <stdio.h> you should be using <cstdio>. It's the newer and more standard one. Don't know if it will help though.
Dev Journal - Ride the Spiralhttp://spiralride.blogspot.com/
Well, the thing of the precompiled headers worked pretty well, but now, is the linker the one giving me problems

Quote:
Pruebas SDL error LNK2019: unresolved external symbol _SDL_main referenced in function _main


I already set on the command line of the linker to include SDL.lib and SDLmain.lib, any other option?

This topic is closed to new replies.

Advertisement