Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » [Aide SDK] Les erreurs de compilation
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

[Aide SDK] Les erreurs de compilation

Posté le 15/05/2011 00:10

Suite aux nombreuses demande d'aide que je reçois concernant des messages d'erreur lors de compilation avec le SDK, je décide de créer ce topic qui aura pour but de recenser tous les messages d'erreur, de les expliquer, et de donner leur solution.

Premièrement, qu'est ce qu'une erreur de compilation ?

Ici, ce sont les 4 lignes qui commencent par le chemin de mon fichier source contenant les erreurs (Z:\home\pierre\a\a.c) suivi du numéro de la ligne contenant l'erreur.

Liste des erreurs

Illegal token ''<mot>''
Description : Une erreur de syntaxe a été rencontrée avant <mot> (un point virgule manquant, une parenthèse en trop ...)
Solution : Arrêter de coder avec les pieds.

Undeclared name ''<nom>''
Description : Une variable est utilisée sans avoir été déclarée au préalable.
Solution : Déclarer la variable au début de la fonction.

Cannot convert parameter ''X''
Description : Le paramètre n°X envoyé à la fonction n'est pas du bon type, et ne peut pas être converti.
Solution : Vérifier quel type de variable demande la fonction, et lui envoyer une variable du bon type.

Illegal initializer type
Description : Une variable est initialisée avec un type incorrecte (exemple, un entier initialisé avec une chaîne de caractère)
Solution : Initialiser la variable avec une valeur CONSTANTE correcte.
Le compilateur Renesas utilisé par le SDK respecte la norme C89, qui spécifie qu'une variable doit être initialisée avec une valeur constante, et non une valeur de retour de fonction, ou un paramètre de la fonction.

Multiple variable declarations
Description : Une variable a déjà le même nom et la même portée que celle déclarée à la ligne de l'erreur.
(Deux variables peuvent avoir le même nom si elles n'ont pas la même portée)
Solution : Nommer la variable différemment.

Type not compatible for ''=''
Description : L'affectation d'une valeur à une variable a échouée car la valeur n'est pas d'un type compatible avec celui de la variable.
Solution : Si la valeur affectée est un retour de fonction, vérifier quel type de variable retourne la fonction.

Modifiable lvalue required for ''=''
Description : Un élément non modifiable (comme une fonction où une constante) est suivi d'un signe égal.
Solution : Seule les variables peuvent se voir affecter une valeur avec ''=''.

Index not integer
Description : utilisation d'un float ou d'un double dans l'index d'une case de tableau.
Solution : Caster en int, tableau[double] devient tableau[(int)double]

Number of parameters mismatch
Description : Trop ou pas assez de paramètres sont envoyés à la fonction.
Solution : Regarder ce que demande la fonction, et le respecter.

Undefined external symbol ''_<nom de fonction>''
Description : Une fonction est appelée, mais son implémentation n'a pas été compilée.
Solution : Vérifier l'orthographe du nom, vérifier si le fichier contenant la fonction est bien dans la fenêtre ''Files in project''. Si tout ça est bon, essayez d'éditer le fichier contenant l'implémentation de la fonction (ajouter un espace, le supprimer, sauvegarder), ça permettra au compilateur de re-compiler le fichier.

couldn't open ''<nom de fichier>''
Description : Un fichier inclu avec #include n'existe pas.
Solution : Lors de l'inclusion d'un fichier, il faut donner son chemin relatif depuis le fichier contenant la directive #include

Empty source program
Description : Le fichier source est vide, et aucun compilateur n'aime ça.

Cannot open source file ''<nom de fichier>''
Description : Le fichier source présent dans la fenêtre ''Files in project'' du SDK n'existe pas.

Unrecognized preprocessing directive
Description : Une directive de préprocesseur (lignes commençant pas #) n'est pas correctement orthographiée.

Illegal preprocessor syntax
Description : Erreur de syntaxe dans une directive de préprocesseur.

Expected a file name
Description : Un nom de fichier est attendu (généralement une erreur de syntaxe dans une directive include)

Expected an identifier
Description : Un identifiant est attendu (généralement une erreur de syntaxe dans une directive define ou ifdef)

Invalid parameter specified in option "input" : ""C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\FX\lib\setup.obj""
Description : Ne jamais installer le SDK dans un dossier dont le chemin comporte des parenthèses ! Mettez-le dans C:\Programmes\CASIO par exemple.

Cette liste est incomplète, si vous rencontrez d'autres erreurs, vous pouvez les poster ici, elles seront ajoutées.

Voici une liste en anglais de toutes les erreurs possibles et imaginables. Cela ne vous donne pas forcément une bonne solution, mais ça peut vous aiguiller sur une piste


Dernière modification : 26/09/2013 (Dark Storm)

Fichier joint


Pages : Précédente1 ... , 17, 18, 19, 20, 21, 22, 23, 24, 25, 26Suivante
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 07/08/2014 19:31 | #


Depuis le temps que je pose cette question : comment afficher les caractères spéciaux ? Comme les flèche 0xE69B
AlphacreatorHors ligneMembrePoints: 1464 Défis: 43 Message

Citer : Posté le 07/08/2014 20:23 | #


Tu convertis en décimal et tu fais comme ça: Print("\346\222"); par exemple (attention je n'ai pas mis les bonnes valeurs)
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 07/08/2014 20:37 | #


Ok merci.
LephenixnoirHors ligneAdministrateurPoints: 15740 Défis: 136 Message

Citer : Posté le 10/08/2014 22:28 | #


Sauf que c'est pas du décimal qu'il faut mettre mais de l'octal. À part ça, tout va bien.
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 10/08/2014 22:31 | #


Ah voilà ! Je me disais bien que ça chiait quelque part Merci.

Ajouté le 15/08/2014 à 17:38 :
Il y a raison pour qu'un constructeur en C++ ne soit pas appelé ?
Game_Map.hpp
class Game_Map
{
public:
    // initialisation
    Game_Map();

...

}

Game_Map.cpp
Game_Map::Game_Map()
{
    // le code ici n'est pas exécuté
}

Le constructeur n'est pas exécuté quand je fais Game_Map game_map;
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 15/08/2014 17:40 | #


Comment tu l'initialises?
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 15/08/2014 17:44 | #


Game_Map game_map;
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 15/08/2014 17:47 | #


essaye de rajouter des parenthèse après
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 15/08/2014 18:18 | #


Il ne faut pas en mettre. Et puis ca foire à la compilation si j'en mes :/
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 18/08/2014 10:33 | #


Plop les gens !
J'aurai besoin d'aide pour une histoire d'allocation dynamique en C++
En gros, le code ici est censé initialiser un tableau de sprite, et y mettre un premier sprite de test. le problème, c'est que quand je veux récupérer le sprite, et ben ça plante :/
Ça fait depuis dix minutes que je suis dessus, et cela commence a doucement me diviser les organes génitaux.

void initGetSprite()
{
unsigned char heros0[]={0x0, 0x0, 0xc7, 0xc6, 0xba, 0xba, 0x9c, 0x72, 0xd1, 0x16, 0x7c, 0x7c, 0x57, 0xd4, 0x74, 0x5c, 0x90, 0x14, 0x8f, 0xe2, 0xf8, 0x3e, 0x93, 0x8a, 0xbc, 0x7c, 0x60, 0xf8, 0x3d, 0x8, 0x1f, 0xf0 };
unsigned char** sprites = getStockageSprite();
sprites = (new unsigned char*[NB_SPRITE_VIVANT]);
for(int i = 0;i<NB_SPRITE_VIVANT;i++)sprites[i]=  new unsigned char[32];
//todo : charger depuis un fichier
for(int i =0;i<32;i++)sprites[0][i]=heros0[i];
}

unsigned char** getStockageSprite()
{
static unsigned char** sprites;
return sprites;
}

unsigned char* getSprite(unsigned char IDsprite,unsigned char direction,int positionX,int positionY)
{
unsigned char** sprites = getStockageSprite();
return sprites[0];
}

Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Dark stormEn ligneMembre d'honneurPoints: 10825 Défis: 176 Message

Citer : Posté le 18/08/2014 10:36 | #


Avec LIBbmp, c'est bien plus simple de charger depuis un fichier puisque la lib te retourne un pointeur sur le sprite. A partir de ce moment, tu n'a plus qu'à le libérer quand t'as fini avec lui.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 18/08/2014 10:41 | #


Oui mais non, LIBbmp utilise un codage différent et rajoute des trucs qui dans mon cas précis, me gènent :/

Ajouté le 18/08/2014 à 10:46 :
Ouais bon tant pis, je vais revenir à la bonne vieille méthode ultra bourrinne de tableau a une dimension transformé en tableau à x dimensions
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Dark stormEn ligneMembre d'honneurPoints: 10825 Défis: 176 Message

Citer : Posté le 18/08/2014 10:47 | #


Tu as la fonction BMP_GetData(bitmap, &error); qui te retourne le binaire d'un Bitmap *bitmap

Ajouté le 18/08/2014 à 10:48 :
Si ton tableau change pas de dimensions, tu peux toujours faire une structure
Tiens, je vais faire une astuce là dessus moi
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 18/08/2014 11:04 | #


Bon, j'ai trouvé ce qui n'allait pas, apparement new et malloc n'aiment pas les static
Du coup, en variable globale, le pointeur passe :/
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
LephenixnoirHors ligneAdministrateurPoints: 15740 Défis: 136 Message

Citer : Posté le 18/08/2014 11:05 | #


Sinon, tu sais que la libBMP peut aussi te générer le tableau "classique" pour ML ?
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 18/08/2014 11:15 | #


Non, mais c'est bon, je vais pas apprendre a utiliser une lib pour remplacer une fonction qui me prend 4 minutes a faire (maintenant que j'ai trouvé l'erreur), vu que j'utilise des fonction d'affichage particulières (vous comprendrez en jouant au jeu)
D'autant plus que j'ai pas trop envie d'alourdir le projet de fonctions que je n'utiliserai jamais

par contre, si je peux te donner un petit conseil, qui s'adresse surtout a libtext, mais aussi a bmplib, dans ton .h, met le nom des arguments dans tes prototype, car pour beaucoup de gens qui ont la flemme d'ouvrir le .html quand il codent, c'est un peu la doc de ta lib
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
LephenixnoirHors ligneAdministrateurPoints: 15740 Défis: 136 Message

Citer : Posté le 18/08/2014 11:28 | #


Je ne le fais jamais pour la simple et bonne raison que j'en change souvent... et que je trouve que ça rend illisible les protos.
Enfin, si ça peut aider...
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 18/08/2014 11:35 | #


Oui, pour les fonctions que tu connais et que tu utilise, il n'y a pas de problemes
Mais par contre, pour quelqu'un qui démarre avec ta lib, il faut du temps avant de se souvenir précisément que c'est dans l'ordre texte,X,Y, font, et puis mode, et non pas texte,X,Y,mode,font comme dans la lib standard de casio (avec l'ajout de la font).

Tu vois ce que je veux dire?

Ajouté le 18/08/2014 à 11:36 :
et en plus, mais ca c'est uniquement dans mon cas, j'utilise ctrl+shift+espace sous code::blocks pour voir le prototype quand je ne me souviens plus des argument de la fonction, et avoir (int,int,int) ne m'aide pas vraiment
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
LephenixnoirHors ligneAdministrateurPoints: 15740 Défis: 136 Message

Citer : Posté le 18/08/2014 11:39 | #


D'un côté ça suit une certaine logique : les premiers arguments sont ceux qui ont un caractère plus "invariable" : quand on trace un cercle, on indique d'abord le centre puis le rayon, et ça paraît logique (c'est un exemple assez évident mais c'est pour montrer le concept).

Bref, je m'en occuperai à chacune des prochaines releases respectives de mes libs.
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 18/08/2014 14:43 | #


C'est de nouveau moi
Est ce que quel'un sait si le compilateur C++ supporte les string?

J'ai essayé avec "string.h" <string.h>, mais cela ne marche pas.
Avec "string" ou <string> ,cela me donne cette magnifique erreur de compilationi :
** L2310 (E) Undefined external symbol "string::_ec2p_getmem(const char *, unsigned long, char, bool)" referenced in "H:\prog casio\concours 2014\concours 2014\Debug\concours.obj"


Quelqu'un a-t-il une idée ou vais je devoir recoder tout le type string tout seul? :/
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

Citer : Posté le 18/08/2014 14:44 | #


external symbol, il me semble que ça vient du'ne fonction qu'il ne connaît pas? T'es sur d'avoir rajouté tous les fichiers sources (C/C++) dans le SDK?
Pages : Précédente1 ... , 17, 18, 19, 20, 21, 22, 23, 24, 25, 26Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 142 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd