cs_mimi2733
Messages postés15Date d'inscriptionvendredi 29 mai 2009StatutMembreDernière intervention 9 février 2014
-
1 déc. 2013 à 08:41
cs_mimi2733
Messages postés15Date d'inscriptionvendredi 29 mai 2009StatutMembreDernière intervention 9 février 2014
-
5 déc. 2013 à 13:56
Bonjour,
svp j'ai besoin d'aide je travail sur c++ et il me génère cette erreur
symbole externe non résolu _SDL_main référencé dans la fonction _main
je veux comprendre d'ou vient cette erreur et comment la corriger en sachant k g bien instalè la SDL et Opencv pour mon algo . Merci d'avance
Neron2005
Messages postés63Date d'inscriptiondimanche 5 novembre 2000StatutMembreDernière intervention 1 décembre 20131 1 déc. 2013 à 19:18
Bonjour,
Cela provient du fait que SDL définit une macro
#define main _main
qui permet à SDL d'appeler la fonction _main que lui même définit. Les arguments passés lors que le programme est exécuté en ligne de commande sont alors interprétés par SDL. Je dois avouer que je sais pas trop ce que ça apporte, faudrait lire la doc.
Le problème c'est que le corps de cette fonction est dans le fichier objet sdl_main.dll, ou sdl_main.a selon comment la sdl est liée au programme.
Pour résoudre le problème, y'a deux solutions :
Soit rajouter l'instruction
#undef main
juste avant la fonction main dans le programme principal, comme ça y'a plus besoin de la fonction _main puisqu'elle ne sera jamais appelée.
Soit rajouter le fichier sdl_main.dll ou sdl_main.a lors de l'édition de lien.
Il faut faire attention à l'ordre dans lequel sont ajoutés les fichiers sdl et sdl_main. Si sdl est avant sdl_main et que ca ne fonctionne pas, il faut sans doute mettre sdl_main avant sdl.
Quoi qu'il en soit, à moins de vraiment avoir besoin de la fonction _sdl_main, il est préférable d'opter pour la première solution.