Bonjours, je débute en C++. Ayant utilisé SDL en C je me décide à faire un petit essais en C++.
Malheuresement mon compilateur vois rouge avec ce petit programme:
Le main:
Le fonctions.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <cstdlib> #include <stdlib.h> #include <SDL/SDL.h> #include <string> #include "fonctions.h" int main ( int argc, char** argv ) { SDL_Surface* ecran = NULL; SDL_Surface* message = NULL; SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER); ecran = SDL_SetVideoMode(640,480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); message = load_image("cb.bmp"); apply_surface(0,0,message,ecran); SDL_Delay(1000); SDL_FreeSurface(message); SDL_Quit(); return 0; }
Et finalement le fonctions.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <cstdlib> #include <stdlib.h> #include <SDL/SDL.h> #include <string> SDL_Surface *load_image(std::string filename) { SDL_Surface* loadedImage = NULL; SDL_Surface* optimizedImage = NULL; loadedImage = SDL_LoadBMP(filename.c_str()); if (loadedImage != NULL) { optimizedImage = SDL_DisplayFormat(loadedImage); SDL_FreeSurface(loadedImage); } return optimizedImage; } void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination) { SDL_Rect position; position.x = x; position.y = y; SDL_BlitSurface(source, NULL, destination, &position); }
Rien de bien compliqué, c'est juste un essais. Par contre selon mon compilateur j'ai une "multiple definition of 'load_image(std::string)' " ainsi qu'une: "multiple definition of 'apply_surface(...)' "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include "fonctions.cpp" SDL_Surface *load_image(std::string filename); void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination);
Quand je met mes fonctions et mes headers dans le même fichier que mon main, aucun problème. Par contre si ils sont dans des fichiers séparés, mon compilateur ne veut rien savoir.
J'aimerais donc savoir si je n'ai pas eu un mauvais réflexe hérité du C ou si j'ai tout simplement fait une grosse erreur, merci d'avance![]()
Partager