Je débute, et j'ai un problème.
geoff27007
Messages postés
675
Date d'inscription
Statut
Membre
Dernière intervention
-
Nicolas M. Messages postés 70 Statut Membre -
Nicolas M. Messages postés 70 Statut Membre -
Bonsoir.
Voilà, je débute en programmation, parce que j'aime bien créer et chercher. Je suis des cours venant du site du zér0.
J'en suis à la leçon où il faut faire une fenêtre en dégradé. Mais j'ai un problème.
Je suis sous Code::Blocks.
Voici le code:
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
void pause();
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
SDL_Rect position;
int i = 0;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode( 640, 256, 32, SDL_HWSURFACE | SDL_RESIZABLE);
for ( i = 0 ; i <= 255 ; i++)
lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0);
SDL_WM_SetCaption("Degrade avec la SDL", NULL);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
for (i = 0 ; i <= 255 ; i++)
{
position.x = 0;
position.y = i;
SDL_FillRect( lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i));
SDL_BlitSurface( lignes[i], NULL, ecran, &position);
}
SDL_Flip(ecran);
pause();
for ( i = 0 ; i <= 255 ; i++)
SDL_FreeSurface(lignes[i]);
SDL_Quit();
return 0;
}
void pause()
{
int continuer = 1;
SDL_Event event;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
}
}
}
Il n'y a pas d'erreur, mais quand je fais " Build and Run", rien ne se passe.
En bas j'obtiens ceci:
Project : SDL Application
Compiler : GNU GCC Compiler (called directly)
Directory : C:\Documents and Settings\****\Mes documents\****\DEV C++\PROJETS DEV C++\Fenetre en dégradé\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
Linking executable: sdlapp.exe
.objs\main.o:main.c:(.text+0x0): multiple definition of `SDL_main'
.objs\main.o:main.c:(.text+0x0): first defined here
.objs\main.o:main.c:(.text+0x248): multiple definition of `pause'
.objs\main.o:main.c:(.text+0x248): first defined here
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
Comment puis-je résoudre le problème ? D'autant plus que le code est exactement le même que dans le cours.
Merci.
Voilà, je débute en programmation, parce que j'aime bien créer et chercher. Je suis des cours venant du site du zér0.
J'en suis à la leçon où il faut faire une fenêtre en dégradé. Mais j'ai un problème.
Je suis sous Code::Blocks.
Voici le code:
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
void pause();
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
SDL_Rect position;
int i = 0;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode( 640, 256, 32, SDL_HWSURFACE | SDL_RESIZABLE);
for ( i = 0 ; i <= 255 ; i++)
lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0);
SDL_WM_SetCaption("Degrade avec la SDL", NULL);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
for (i = 0 ; i <= 255 ; i++)
{
position.x = 0;
position.y = i;
SDL_FillRect( lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i));
SDL_BlitSurface( lignes[i], NULL, ecran, &position);
}
SDL_Flip(ecran);
pause();
for ( i = 0 ; i <= 255 ; i++)
SDL_FreeSurface(lignes[i]);
SDL_Quit();
return 0;
}
void pause()
{
int continuer = 1;
SDL_Event event;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
}
}
}
Il n'y a pas d'erreur, mais quand je fais " Build and Run", rien ne se passe.
En bas j'obtiens ceci:
Project : SDL Application
Compiler : GNU GCC Compiler (called directly)
Directory : C:\Documents and Settings\****\Mes documents\****\DEV C++\PROJETS DEV C++\Fenetre en dégradé\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
Linking executable: sdlapp.exe
.objs\main.o:main.c:(.text+0x0): multiple definition of `SDL_main'
.objs\main.o:main.c:(.text+0x0): first defined here
.objs\main.o:main.c:(.text+0x248): multiple definition of `pause'
.objs\main.o:main.c:(.text+0x248): first defined here
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
Comment puis-je résoudre le problème ? D'autant plus que le code est exactement le même que dans le cours.
Merci.
A voir également:
- Je débute, et j'ai un problème.
- Comment faire un point en debut de phrase sur word - Guide
- Pourquoi je reviens au début de page sur le bon coin - Forum Google Chrome
- Je suis a la fin du matin au debut de la nuit devinette ✓ - Forum Loisirs / Divertissements
- Le fichier à télécharger contient une vidéo et des sous-titres. dans un logiciel de montage vidéo : importez la vidéo. doublez la vitesse de toute la vidéo. copiez le plan avec la terre. insérez cette copie au début du montage. importez les sous-titres à votre montage. quel est le sous-titre du plan avec les gâteaux ? ✓ - Forum Logiciels
- Je débute:"commande n=int(input()) - Forum Python
19 réponses
Parce que je crois qu'il faut créer un compte, et j'en ai pas, et j'ai pas envie d'en créer un. De plus, il a beacoup de monde fréquentant CCM.
Bonjour,
'pause' est une fonction qui existe déjà dans stdlib.h ou stdio.h.
Utilise simplement un autre nom de fontion.
Ajouter une majuscule devrait suffir : 'Pause'
Bonsoir !
'pause' est une fonction qui existe déjà dans stdlib.h ou stdio.h.
Utilise simplement un autre nom de fontion.
Ajouter une majuscule devrait suffir : 'Pause'
Bonsoir !
D'accord, sinon je ne change rien d'autres ?
Merci de la réponse je vais essayer.
(faut dire quand dans le cours y'a pas de majuscule).
Merci de la réponse je vais essayer.
(faut dire quand dans le cours y'a pas de majuscule).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
1 - teste avec 'pauseMonTruc' ou quelquechose comme ca... on devrait jamais appeler une fonction 'pause' tout court.
2 - si ca marche pas, supprime le prototype de fonction en haut (void pause();) , et remonte ta fonction pause au dessus du main, ca pourrait fonctionner.
1 - teste avec 'pauseMonTruc' ou quelquechose comme ca... on devrait jamais appeler une fonction 'pause' tout court.
2 - si ca marche pas, supprime le prototype de fonction en haut (void pause();) , et remonte ta fonction pause au dessus du main, ca pourrait fonctionner.
J'obtiens ça à présent:
main.c:10: error: syntax error before '{' token
main.c:14: error: syntax error before "while"
main.c:28: error: parameter `i' is initialized
main.c:30: error: syntax error before "SDL_Init"
Process terminated with status 1 (0 minutes, 0 seconds)
4 errors, 0 warnings
main.c:10: error: syntax error before '{' token
main.c:14: error: syntax error before "while"
main.c:28: error: parameter `i' is initialized
main.c:30: error: syntax error before "SDL_Init"
Process terminated with status 1 (0 minutes, 0 seconds)
4 errors, 0 warnings
L'installation SDL s'est bien passée puisque juste avant une fenetre en fond couleur simple avec un rectangle de couleur à l'intérieur fonctione.
"quel compilateur /version utilises-tu ? comment compiles-tu ? as-tu testé en ligne de commande ?"
Je suis vraiment désolé d'être aussi naze mais je ne sais pas où trouver ces infos.
"quel compilateur /version utilises-tu ? comment compiles-tu ? as-tu testé en ligne de commande ?"
Je suis vraiment désolé d'être aussi naze mais je ne sais pas où trouver ces infos.
Chez moi, ton code compile parfaitement (et fonctionne), tel que tu l'as posté en haut...
(avec "gcc -o test test.c -lSDL")
Etrange....
En plus, ce message la est vraiment bizarre :
.objs\main.o:main.c:(.text+0x0): multiple definition of `SDL_main'
.objs\main.o:main.c:(.text+0x0): first defined here
Il te dis que tu as la fonction SDL_main définie en double ! alors qu'il n'y en a pas définie dans ton code, et qu'il n'y a qu'un include...
Je te conseillerai donc simplement de vérifier / recommencer ton installation SDL.
PS : quel compilateur /version utilises-tu ? comment compiles-tu ? as-tu testé en ligne de commande ?
(avec "gcc -o test test.c -lSDL")
Etrange....
En plus, ce message la est vraiment bizarre :
.objs\main.o:main.c:(.text+0x0): multiple definition of `SDL_main'
.objs\main.o:main.c:(.text+0x0): first defined here
Il te dis que tu as la fonction SDL_main définie en double ! alors qu'il n'y en a pas définie dans ton code, et qu'il n'y a qu'un include...
Je te conseillerai donc simplement de vérifier / recommencer ton installation SDL.
PS : quel compilateur /version utilises-tu ? comment compiles-tu ? as-tu testé en ligne de commande ?
ton compilateur est GCC !!! c'était marqué en plus ! lol
pour connaitre la version, tape "gcc -v" en console ; dernière ligne
Tu dois quand même savoir ou est ton fichier code... j'espère :)
Si c'est le cas, place toi dans le répertoire ou est ton fichier, dans une console.
Ensuite, tapes " gcc monFichierSource.c -o monExecutable -SDL"
en remplacant les noms biensur ! ca ve te créer ton prog.
Et ensuite (si c'est bien compilé), tu le lances : " ./monExecutable"
Si ca fonctionne, ton problème provient de ton interface de développement (Code::Blocks. d'après ce que j'ai compris).
pour connaitre la version, tape "gcc -v" en console ; dernière ligne
Tu dois quand même savoir ou est ton fichier code... j'espère :)
Si c'est le cas, place toi dans le répertoire ou est ton fichier, dans une console.
Ensuite, tapes " gcc monFichierSource.c -o monExecutable -SDL"
en remplacant les noms biensur ! ca ve te créer ton prog.
Et ensuite (si c'est bien compilé), tu le lances : " ./monExecutable"
Si ca fonctionne, ton problème provient de ton interface de développement (Code::Blocks. d'après ce que j'ai compris).
Je vais essayer sous DEVC++.
Sinon bah je ferais ce que tu m'as dis.
Merci de ton aide !!
Bonne fin de soirée.
(pour l'instant je laisse " non résolu".)
Sinon bah je ferais ce que tu m'as dis.
Merci de ton aide !!
Bonne fin de soirée.
(pour l'instant je laisse " non résolu".)
1. T'est sur que c'est seulement ce code que tu ecrit ?
2. Tu ecrit tout ca et seulement ca dans main.c ?
3. C'est du C#, C ou C++ ?
4. Au debut, tu a pris "console" ou "fenetre" ?
J'en sais rien c'est juste pour aider Marc.
2. Tu ecrit tout ca et seulement ca dans main.c ?
3. C'est du C#, C ou C++ ?
4. Au debut, tu a pris "console" ou "fenetre" ?
J'en sais rien c'est juste pour aider Marc.
Au début j'ai SDL Application. Dans les propriétés du projet, j'ai mis " Gui application".
Il n'y a que ça, il n'y a que main.c
C'est du C.
Il n'y a que ça, il n'y a que main.c
C'est du C.
J'ai le même problème, enfin pas sur un tuto du site du zero, bien que les ayant suivi par le passé ^^'
Je pense que le problème viens de codeblocks, je teste sous cygwin ^^'
Je pense que le problème viens de codeblocks, je teste sous cygwin ^^'
Salutations,
J'ai eu le même problème, en suivant apparemment les mêmes tutoriaux vu que les codes sources sont identique.
L'auteur utilise des exemples les uns à la suite des autres, et je les aient fait figurer dans le même projet. Si on les fait figurer dans des projets différents ou si on supprime le premier fichier source, l'erreur disparait.
Arktest
J'ai eu le même problème, en suivant apparemment les mêmes tutoriaux vu que les codes sources sont identique.
L'auteur utilise des exemples les uns à la suite des autres, et je les aient fait figurer dans le même projet. Si on les fait figurer dans des projets différents ou si on supprime le premier fichier source, l'erreur disparait.
Arktest
Fantome Hamster Jovial a dit :
"1. T'est sur que c'est seulement ce code que tu ecrit ?
2. Tu ecrit tout ca et seulement ca dans main.c ?
3. C'est du C#, C ou C++ ?
4. Au debut, tu a pris "console" ou "fenetre" ?"
Si on parle d'un fichier main.c, il est impossible qu'il s'agisse du C++ qui donnerait main.cpp ou du C# qui donnerait main.cs...
Je crois qu'on est obligé d'utiliser SDL Application si on veut utiliser la SDL... C'est de la fenêtre mêlée à un peu de console, si je ne m'abuse... Mais bon, niveau SDL, il faudrait que je revoie mon code, j'ai les mêmes problèmes avec un bête code qui ouvre une fenêtre et qui y dessine un carré blanc sur fond bleu-vert... :'(
"1. T'est sur que c'est seulement ce code que tu ecrit ?
2. Tu ecrit tout ca et seulement ca dans main.c ?
3. C'est du C#, C ou C++ ?
4. Au debut, tu a pris "console" ou "fenetre" ?"
Si on parle d'un fichier main.c, il est impossible qu'il s'agisse du C++ qui donnerait main.cpp ou du C# qui donnerait main.cs...
Je crois qu'on est obligé d'utiliser SDL Application si on veut utiliser la SDL... C'est de la fenêtre mêlée à un peu de console, si je ne m'abuse... Mais bon, niveau SDL, il faudrait que je revoie mon code, j'ai les mêmes problèmes avec un bête code qui ouvre une fenêtre et qui y dessine un carré blanc sur fond bleu-vert... :'(