CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

c++, SDL linker error !?

farfadetsan
farfadetsan
Niveau 6
31 mars 2006 à 17:51:02

[Linker error] undefined reference to `SDL_Init´
[Linker error] undefined reference to `SDL_SetVideoMode´
[Linker error] undefined reference to `SDL_ShowCursor´
........................

voila je compren pas trop quel est le probleme, mais quand je fait compiler et éxécuter il met ca en message d´erreur.

quel est le probleme ?

godrik
godrik
Niveau 30
31 mars 2006 à 18:07:09

Ca ressemble a un message d´erreur de linkage.
as tu bien ajoute SDL.lib a la liste des bibliotheque a linker avec ton programme ?

Pour plus de details, quel compilateur/environement utilises tu ?

farfadetsan
farfadetsan
Niveau 6
31 mars 2006 à 19:03:59

ben ca ne vien pas du compilateur ou de sdl lib car j´ai eu un probleme avec mon programme a la suite duquel j´ai du éteindre mon ordi a la facon barbare ^^. Et apré je l´ai refait comme avant et ca ne marche plus : ca me met ce message d´erreur.

dnob700
dnob700
Niveau 10
31 mars 2006 à 19:35:02

vérifie quand même que tu as bien sdl.a et sdlmain.a dans les options de ton linker (ou les même en .lib si tu utilise visual c++) car avec le plantage, tu as pu perdre un bout de ton fichier s´il n´était pas enregistrée. Et clique sur "tout reconstruire" ou "rebuild all".

-pedrolan-
-pedrolan-
Niveau 7
05 avril 2006 à 14:21:20

Comme farfadetsan, j´ai des problèmes avec SDL...
J´ai pourtant bien tout linké, bien installé, même réinstallé sdl, pourtant le compilateur m´indique toujours une erreur de lien pour libSDL_Main...
Je ne sais plus quoi faire...

JeanYvesYves
JeanYvesYves
Niveau 10
05 avril 2006 à 14:35:43

pedrolan >
S´il n´arrive pas a trouver la lib, c´est que tu l´as mise au mauvais endroit.
Si tu as une erreur sur SDL_main, vérifie que ton main est de la forme :

int main(it argc,char** argv)

-pedrolan-
-pedrolan-
Niveau 7
05 avril 2006 à 17:47:14

Il est de la forme:
int main(int argc, char** argv[])

C´est le fait que argv soit un tableau qui fait ça?
Je testerai, mais bon ça m´étonnerait...
J´ai vérifié et revérifié, tout est bien installé, au bon endroit, tout bien linké...

-pedrolan-
-pedrolan-
Niveau 7
05 avril 2006 à 17:58:09

Eh ben finalement je retire ce que je viens de dire, c´est réellement à cause du fait que argv soit un tableau que ça ne compilait pas, ouf, ça marche, merci JYY, je vais enfin pouvoir terminer mon Pong en SDL! :p)

dnob700
dnob700
Niveau 10
05 avril 2006 à 19:53:02

argv est bien un tableau. C´est même un tableau de tableau. Par contre, ce n´est pas comme tu l´avais écrit un tableau de tableau de tableau !

les syntaxes correctes peuvent être : char** argv, ou alors char* argv[], ou peut-être (je n´en suis pas sûr) char argv[][].

Car une * avant le nom équivaut à peu près à un [] après.

-pedrolan-
-pedrolan-
Niveau 7
08 avril 2006 à 16:46:30

Et au fait, pourquoi il faut mettre
int argc, char** argv
?

dnob700
dnob700
Niveau 10
09 avril 2006 à 16:24:24

tu veux dire pourquoi il faut le mettre spécifiquement avec un programme SDL, ou en toute généralité ?

En toute généralité, ça sers à lire les paramètres données au programme sur la ligne de commande (argc donne le nombre de paramètres de la ligne de commande et argv est un tableau qui contient argc chaine decaractères (donc c´est un tableau de tableau de char, d´où les **)).

Avec la SDL, c´est par ce que l´architecte de cette lib à coder avec ses pieds. Et sous windows, il a absolument besoin d´effectuer des bouts de code avant que ton programme ne se lance (c´est idiot, mais c´est comme ça). Alors il y a une fonction main dans la bibliothèque (dans le fichier libSDLmain.a pour être précis je crois, c´est à ça qu´il sers, et il y a fichiers deux car il n´existe par sur les autres OS (ce fichier là)) qui sera utilisé par le compilateur comme fonction de démarrage.

Et pour que ça ne plante pas dans l´un des header de la bibliothèque (SDLmain.h ?) il y a un truc du genre :

  1. define main SDL_main

et donc ta fonction main est renomé par le compilo en SDL_main et non pas en main. Et à la fin de la vraie fonction main, le programmeur de la SDL appelle la fonction main. Mais comme elle n´est défini nulle part, il a du en écrire un prototype, et comme il ne pouvait pas savoir si tu allais te servir ou non des arguments de la ligne de commande, il a écrit son prototype sur le modèle :
int main(int,char**);
Et donc ta fonction main est obligé d´avoir le même prototype pour qur l´édition des liens puisse s´effectuer.

Tout celà c´est stupide et inutile (et même contraignant dans certain cas), c´est l´une des raisons qui font que je n´aime pas cette bibliothèque.

-pedrolan-
-pedrolan-
Niveau 7
12 avril 2006 à 15:21:13

:ok: Ok merci. :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment