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

GTK+ avec C & C++ Discussion :

Undefined reference to WinMain@16


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Points : 51
    Points
    51
    Par défaut Undefined reference to WinMain@16
    Salut a tous je vous ecris car j'ai un petit probleme.
    En effet je programme depuis peu sous gtk et devcpp et j'ai une erreur lorsque je compile mon programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Undefined reference to WinMain@16
    D'ou est ce que sa vient ?
    Merci de votre aide
    titor
    Software is like sex, it's better when it's free

  2. #2
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut

    Lors de la création de projet, il faut choisir "GTK+" et non "Win32 application". L'as-tu fait?

    Nas'

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut

    Que signifie l'erreur : unresolved external symbol _WinMain@16 ?

    Mais normalement en utilisant le devpak (cf post-it ci-dessus) tu as la possibilité de créer un projet de type Gtk+ et tout ce fait tout seul.

  4. #4
    Membre du Club Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Points : 51
    Points
    51
    Par défaut
    Bah j'ai essayé ce que vous dites mais rien n'y fait il reste toujours cette erreur.
    Que faire ? Faut-il que je reinstalle Dev-Cpp ?
    Cette erreur est survenue juste apres que j'essaie de mettre un menu dans une fenetre, et que je modifie le code obtenu avec Glade.
    Merci de votre aide
    Software is like sex, it's better when it's free

  5. #5
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Bon je vais me permettre de paraphraser gege2001 en réécrivant le texte de son lien... As-tu bien défini la fonction Winmain et pas main?

    Le fichier qui le contient est bien dans le projet?

    Jc

  6. #6
    Membre du Club Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Points : 51
    Points
    51
    Par défaut
    Au risque de paraitre incompetent, comment définir la fonction WinMain ?
    ?
    Software is like sex, it's better when it's free

  7. #7
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Comme ceci:

    int WinMain(

    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
    );

    Référence:
    WinMain Function

    Jc

  8. #8
    Membre du Club Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Points : 51
    Points
    51
    Par défaut
    Merci.
    Mais il se trouve que j'ai une autre erreur
    il me dit que j'ai une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parse error before hInstance
    je vois pas d'ou sa vient j'ai tout fait comme vous aviez dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int WinMain
    (HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, 
    int nCmdShow 
    );
    Software is like sex, it's better when it's free

  9. #9
    Membre habitué Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Points : 187
    Points
    187
    Par défaut
    Citation Envoyé par titor
    Mais il se trouve que j'ai une autre erreur
    <...>
    Tu n'aurais pas oublié

    par hasard ???

    Marco85
    If you cannot explain a concept to a six year-old, then you do not fully understand it. [Albert Einstein]

  10. #10
    Membre du Club Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Points : 51
    Points
    51
    Par défaut
    il est vrai que j'avais oublié de mettre <windows.h>

    Mais maintenant j'ai une nouvelle erreur (que d'erreurs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    conflicting types for WinMain
    Ainsi que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    previous declaration of WinMain line 1031
    Que faire ?

    Edit
    Je n'ai 1031 lignes de codes
    Software is like sex, it's better when it's free

  11. #11
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    WinMain est, comme son nom l'indique, prévu pour les programmes utilisant l'API Windows. GTK+ étant natif du monde Linux il n'est pas question d'utiliser autre chose que main dans le code.

    Si tu as bien créer un projet GTK+ (donc normalement, les options du compilateur ont été configurées), montre nous le code qui te pose problème (code réduit au minimum compilable, pour que l'on puisse tester).

  12. #12
    Membre du Club Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Points : 51
    Points
    51
    Par défaut
    En faitc'est le code généré par Glade que j'ai un peu modifier pour tester des trucs je vous les mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <string.h>
    #include <stdio.h>
    #include <gdk/gdkkeysyms.h>
    #include <gtk/gtk.h>
     
    #define GLADE_HOOKUP_OBJECT(component,widget,name) \
      g_object_set_data_full (G_OBJECT (component), name, \
        gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
     
    #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
      g_object_set_data (G_OBJECT (component), name, widget)
     
    GtkWidget*create_window1 (void)
    {
      GtkWidget *window1;
      GtkWidget *fixed1;
      GtkWidget *play;
      GtkWidget *barre;
     
      window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_title (GTK_WINDOW (window1), "Gtk put everywhere");
      gtk_window_set_default_size(GTK_WINDOW(window1), 450, 250);
     
      fixed1 = gtk_fixed_new ();
      gtk_widget_show (fixed1);
      gtk_container_add (GTK_CONTAINER (window1), fixed1);
     
      play = gtk_button_new_with_mnemonic ("_Play");
      gtk_widget_show (play);
      gtk_fixed_put (GTK_FIXED (fixed1), play, 15, 200);// on le place ou on veut coord X et Y
      gtk_widget_set_size_request (play, 65, 25);// taille bouton
     
       barre = gtk_progress_bar_new();
      gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(barre), GTK_PROGRESS_LEFT_TO_RIGHT);
      gtk_widget_show(barre);
      gtk_fixed_put(GTK_FIXED(fixed1), barre, 25, 125);
      gtk_widget_set_size_request(barre, 400, 20);
     
      /* Store pointers to all widgets, for use by lookup_widget(). */
      GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1");
      GLADE_HOOKUP_OBJECT (window1, fixed1, "fixed1");
      GLADE_HOOKUP_OBJECT (window1, play, "button1");
      GLADE_HOOKUP_OBJECT(window1, pause, "button2");
     
      return window1;
    }
    Software is like sex, it's better when it's free

  13. #13
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par titor
    En faitc'est le code généré par Glade que j'ai un peu modifier pour tester des trucs je vous les mets :
    Si tu essais de compiler ceci tel quel, effectivement il manque la fonction main. Faut resortir tes cours de C!
    Pourquoi ne pas avoir gardé le squellette proposé lors de la création du projet?

  14. #14
    Membre du Club Avatar de titor
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 78
    Points : 51
    Points
    51
    Par défaut
    Et bien sa a fonctionné tres bien comme sa. Sa compilait tres bien jusqu'a ce que j'essai d'inserer un menu et sa a provoqué la fameuse erreur WinMain.
    Et j'ai pas gardé le squelette de base que glade me proposait car j'avais aussi tout un tas d'erreurs qui etait dues a des fonctions manquantes alors que le pacakge dev-cpp etait tres bien installé.
    Je vais continuer de chercher dans le code generer par glade cequi va pas ou alors ce que j'ai supprime et que je n'aurais pas du.
    titor


    EDIT

    Apres une petite recherche, j'ai toruve j'avais supprime le fichier qui contenait la fonction main dsl du derangement et voila c'est resolu
    merci a tous titor
    Software is like sex, it's better when it's free

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/07/2012, 17h23
  2. jni :undefined reference to `WinMain@16'
    Par fk04 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/03/2010, 14h09
  3. Réponses: 7
    Dernier message: 13/07/2009, 17h44
  4. undefined reference to `WinMain@16'
    Par usa75 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 26/02/2008, 14h49
  5. [Linker error] undefined reference to `WinMain@16'
    Par juju03 dans le forum Dev-C++
    Réponses: 5
    Dernier message: 11/10/2007, 23h19

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