IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

SDL + OpenGL [Linker error] undefined reference to `WinMain@16'


Sujet :

C++

  1. #1
    Débutant Avatar de jockyboss777
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 68
    Points
    68
    Par défaut SDL + OpenGL [Linker error] undefined reference to `WinMain@16'
    Salut a tous !

    Bonsoir, j'écris sur ce forum pour savoir pourquoi j'obtiens l'erreur :
    • [Linker error] undefined reference to `WinMain@16'


    Je m'explique :
    Il y a quelques jours j'ai décidé d'utiliser le fichier SDL_image.h qui permet de lire plus ou moins n'importe quel format image, pour ensuite transformer cette dernière en texture utilisable pour OpenGL (j'ai vu sur certain forum que cela était faisable !) mais dès l'instant ou j'ai inclus ce fichier (ainsi que TOUT SDL qui va avec, bien sûr) j'ai eu cette erreur !!

    Petite précision :
    • Jusqu'ici j'ai utilisé OpenGL, et tout mes codes son prévu pour lui, je ne peut pas tout changer
    • MonIDE est Dev-C++
    • Mon projet est un projet console (lancer a partir d'un devpack)
    • Normalement j'ai linker tous les *lib


    Auriez-vous une idée du pourquoi du comment ?
    Merci
    Jonathan

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Le message, bien que légèrement cryptique, est relativement clair: l'éditeur de liens ne trouve pas la fonction principale main. Or, toute application doit disposer de la fonction main.

    Tu as donc deux solutions:

    Soit ton projet est destiné à fournir une bibliothèque, et il s'agira alors de modifier les options de compilation de manière à générer une telle bibliothèque (statique ou dynamique)

    Soit ton projet est une application au sens propre (équivalent à un *.exe sous windows), et il faut donc que tu crées une fonction main dans un fichier d'implémentation (qui se chargera d'initaliser SDL et OpenGL et de les utiliser). [EDIT]Peut être as tu "simplement" supprimé par erreur le fichier qui contenait la fonction main() de ton projet [/EDIT]

    Pour information, cela fait maintenant plusieurs années que DevC++ n'est plus maintenu (seuls certains devpack's le sont encore... et je ne peux absolument pas préjuger de la durée pendant laquelle ils le resteront)...

    Peut être serait-il intéressant pour toi d'envisager de changer d'IDE, pour, par exemple, Code::blocks, qui utilise nativement le même compilateur (Gcc) mais dans une version plus récente ou tout autre à ton gout

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 912
    Points : 220 314
    Points
    220 314
    Billets dans le blog
    126
    Par défaut
    Bonjour,

    Si je me rapelle bien, la solution à ton problème est juste de renommé ton main actuel par SDL_Main() ( voir doc pour le nom précis ( histoire de majuscules ) )

    Pourquoi faut t'il faire ça ?

    Parce que dans le fichier SDL.h il y a une redéfinition du main pour des histoires de compatibilité Windows / Autres système.

  4. #4
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Bonjour,

    En fait, il aurait mieux valu poster ça dans le forum SDL...
    (Surtout que la question a été posée plein de fois!)

    Une recherche internet t'aurait aussi donné la solution facilement.

    Normalement remplacer
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char **argv)
    suffit.

    Sinon il faut vérifier l'ordre de linkage des lib, et vérifier que tu as bien linké mingw32 si tu es sous mingw.

  5. #5
    Débutant Avatar de jockyboss777
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Points : 68
    Points
    68
    Par défaut
    Bonjour,
    Merci pour toutes vos réponses !

    @coyotte507 > Pour la fonction main() elle est déjà sous la forme argc, argv et elle a toujours très bien fonctionné

    @LittleWhite > Effectivement il se trouve que j'avais déjà trouvé cela sur plusieurs forum mais malheureusement cela n'a rien changé

    @koala01 > En fait j'ai commencé sur Block:Code mais je n'ai jamais réussi (j'étais un noobs) a l'utiliser pour OpenGL (Je ne sais plus pour quelles raisons) se qui fait que j'en ai gardé une très mauvaise image; mais je vais le réinstaller et réessayer.

    Je vous tiens au courant
    Encore merci pour toutes vos réponces

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 912
    Points : 220 314
    Points
    220 314
    Billets dans le blog
    126
    Par défaut
    Je crois, mais je n'en suis plus très sur, qu'il faut aussi enlever les #include <windows.h> lorsque l'on utilise la SDL.

    Ou alors, si je me trompe encore, la dernière option, c'est de demander à l'IDE de faire un programme console et non un programme Windows ...

  7. #7
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    http://loka.developpez.com/tutoriel/...lation/devcpp/

    vérifie que l'ordre de linkage est bien le même (ça m'a déjà fait ce problème!) / ou que tu inclus bien les trois librairies par défaut (mingw32, SDLmain, SDL)

  8. #8
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Je confirme, où le main n'a pas la bonne forme (argc ...) ou c'est l'ordre de link des librairies qui n'est pas correcte.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/07/2012, 18h23
  2. [Linker error] undefined reference to `WinMain@16'
    Par juju03 dans le forum Dev-C++
    Réponses: 5
    Dernier message: 12/10/2007, 00h19
  3. Réponses: 1
    Dernier message: 14/11/2006, 12h12
  4. [Linker error] undefined reference to...
    Par z980x dans le forum C++
    Réponses: 4
    Dernier message: 05/03/2006, 16h30
  5. [Linker error] undefined reference to 'IcmpSendEcho@'
    Par Xevious dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 29/12/2005, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo