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

Code::Blocks Discussion :

undefined reference to 'fonction()' avec code block


Sujet :

Code::Blocks

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut undefined reference to 'fonction()' avec code block
    Salut à tous,

    Pour un projet perso d'électronique, je développe une IHM PC avec l'aide de la librairie GTK+. J'ai déjà tenté l'expérience dans le passé avec succès.

    Aujourd'hui, la compilation échoue sitôt que mes fonctions sont éclatées dans différents fichiers header/source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Build Message:
     
    obj\Debug\main.o: In function `main':
    Y:/Documents/Dev/CodeBlocks/Test/TestHeader/main.cpp:42: undefined reference to `onDestroyWindow(_GtkWidget*, void*)'
    Y:/Documents/Dev/CodeBlocks/Test/TestHeader/main.cpp:43: undefined reference to `onDeleteEventWindow(_GtkWidget*, void*)'
    Y:/Documents/Dev/CodeBlocks/Test/TestHeader/main.cpp:48: undefined reference to `onClickedQuit(_GtkWidget*, void*)'
    Y:/Documents/Dev/CodeBlocks/Test/TestHeader/main.cpp:51: undefined reference to `onClickedConnect(_GtkWidget*, void*)'
    Y:/Documents/Dev/CodeBlocks/Test/TestHeader/main.cpp:54: undefined reference to `onClickedLoad(_GtkWidget*, void*)'
    Y:/Documents/Dev/CodeBlocks/Test/TestHeader/main.cpp:57: undefined reference to `onClickedSave(_GtkWidget*, void*)'
    collect2.exe: error: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 1 seconds)
    6 errors, 0 warnings (0 minutes, 1 seconds)
    Par contre, si je regroupe tout dans mon main.c aucun problème, je peux executer et debugger le programme sans problème...

    Je ne vois pas ce qu'il me manque, surement un oubli au niveau de la config de l'IDE, mais je sèche complètement. Voici mon code:

    main.c:
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    #include "Test.h"
     
     
    int main(int argc,char **argv)
    {
        /*
         ***************************
         * Declaration des WidGets *
         ***************************
         */
        GtkWidget *pMainWindow = NULL;
     
        GtkWidget *pQuitBtn = NULL;
        GtkWidget *pConnectBtn = NULL;
        GtkWidget *pLoadBtn = NULL;
        GtkWidget *pSaveBtn = NULL;
     
        GtkWidget *pTable = NULL;
     
     
        // GTK+ Initialisation
        gtk_init(&argc,&argv);
     
        // Build main window
        pMainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_position(GTK_WINDOW(pMainWindow), GTK_WIN_POS_CENTER);
        gtk_window_set_title(GTK_WINDOW(pMainWindow), "MyApplication");
        gtk_window_set_default_size(GTK_WINDOW(pMainWindow), 640, 480);
        gtk_container_set_border_width(GTK_CONTAINER(pMainWindow),20);
     
        g_signal_connect(G_OBJECT(pMainWindow), "destroy", G_CALLBACK(onDestroyWindow), NULL);          // "destroy" est émis lorsque l'objet est détruis
        g_signal_connect(G_OBJECT(pMainWindow), "delete-event", G_CALLBACK(onDeleteEventWindow), NULL); // "delete_event" est émis quand l'utilisateur veut détruire un objet
     
     
        // Build Buttons
        pQuitBtn = gtk_button_new_from_stock(GTK_STOCK_QUIT);
        g_signal_connect(G_OBJECT(pQuitBtn), "clicked", G_CALLBACK(onClickedQuit), NULL);
     
        pConnectBtn = gtk_button_new_with_mnemonic("_Connect");
        g_signal_connect(G_OBJECT(pConnectBtn), "clicked", G_CALLBACK(onClickedConnect), NULL);
     
        pLoadBtn = gtk_button_new_with_mnemonic("_Load File");
        g_signal_connect(G_OBJECT(pLoadBtn), "clicked", G_CALLBACK(onClickedLoad), NULL);
     
        pSaveBtn = gtk_button_new_with_mnemonic("_Save File");
        g_signal_connect(G_OBJECT(pSaveBtn), "clicked", G_CALLBACK(onClickedSave), NULL);
     
        pTable = gtk_table_new(6, 2, TRUE);
        gtk_container_add(GTK_CONTAINER(pMainWindow), pTable);
        gtk_table_attach(GTK_TABLE(pTable), pConnectBtn,     0, 1, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0);
        gtk_table_attach(GTK_TABLE(pTable), pQuitBtn,        1, 2, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0);
        gtk_table_attach(GTK_TABLE(pTable), pLoadBtn,        0, 1, 3, 4, GTK_EXPAND, GTK_EXPAND, 0, 0);
        gtk_table_attach(GTK_TABLE(pTable), pSaveBtn,        1, 2, 3, 4, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
     
        // Display and event loop
        gtk_widget_show_all(pMainWindow);
     
        gtk_main();
     
        // exit
        gtk_exit(EXIT_SUCCESS);
        return EXIT_SUCCESS;
    }
    Test.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #ifndef TEST_H_INCLUDED
    #define TEST_H_INCLUDED
     
    void onDestroyWindow(GtkWidget *pWidget, gpointer data);
    gboolean onDeleteEventWindow(GtkWidget *pWidget, gpointer data);
    void onClickedQuit(GtkWidget *pWidget, gpointer data);
    void onClickedConnect(GtkWidget *pWidget, gpointer data);
    void onClickedLoad(GtkWidget *pWidget, gpointer data);
    void onClickedSave(GtkWidget *pWidget, gpointer data);
     
    #endif // TEST_H_INCLUDED
    Test.c
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    void onDestroyWindow(GtkWidget* pWidget, gpointer data)
    {
        gtk_main_quit();
    }
     
    gboolean onDeleteEventWindow(GtkWidget* pWidget, gpointer data)
    {
        GtkWidget *pDialog = NULL;
        gboolean ContinueFlag = TRUE;
     
     
        pDialog = gtk_message_dialog_new(GTK_WINDOW(pWidget),
                                         GTK_DIALOG_MODAL,
                                         GTK_MESSAGE_QUESTION,
                                         GTK_BUTTONS_YES_NO,
                                         "Are you sure you want to quit?");
     
        switch(gtk_dialog_run(GTK_DIALOG((GtkWidget*)pDialog)))
        {
            case GTK_RESPONSE_YES:
            {
                gtk_main_quit();
                ContinueFlag = FALSE;
                break;
            }
     
            case GTK_RESPONSE_NO:
            {
                gtk_widget_destroy(pDialog);
                break;
            }
        }
     
        return ContinueFlag;
    }
     
    void onClickedQuit(GtkWidget *pWidget, gpointer data)
    {
        GtkWidget *pQuitBox = NULL;
     
     
        pQuitBox = gtk_message_dialog_new(NULL, //GTK_WINDOW(pWidget),
                                         GTK_DIALOG_MODAL,
                                         GTK_MESSAGE_QUESTION,
                                         GTK_BUTTONS_YES_NO,
                                         "Are you sure you want to quit?");
     
        //gtk_window_set_title(GTK_WINDOW(pQuitBox), "Question");
        //gtk_window_set_position(GTK_WINDOW(pQuitBox), GTK_WIN_POS_MOUSE);
     
        switch(gtk_dialog_run(GTK_DIALOG(pQuitBox)))
        {
            case GTK_RESPONSE_YES:
            {
                gtk_main_quit();
                break;
            }
     
            case GTK_RESPONSE_NO:
            case GTK_RESPONSE_NONE:
            default:
            {
                gtk_widget_destroy(pQuitBox);
                break;
            }
        }
    }
     
    void onClickedConnect(GtkWidget* pWidget, gpointer data)
    {
        printf("CONNECT button pushed\n");
    }
     
    void onClickedLoad(GtkWidget* pWidget, gpointer data)
    {
        printf("LOAD button pushed\n");
    }
     
    void onClickedSave(GtkWidget* pWidget, gpointer data)
    {
        printf("SAVE button pushed\n");
    }

    Merci d'avance pour votre aide.

  2. #2
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Bonjour !
    As-tu ajouté le fichier test.c au projet ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Oui bien sur, ils apparaissent tous dans l'arbre du workspace.

    Mais le problème vient bien de ce fichier, car j'ai testé la manip' suivante:

    Si je place les prototypes des fonctions dans "Test.h", que j'ajoute #include "Test.h" en tête du fichier main.c et que je déclare le corps des fonctions dans le main.c, après la fonction main() => ça fonctionne

    Mais si tôt que je déclare le corps des fonctions dans le Test.c, je me retrouve avec les erreurs précédentes

  4. #4
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    mmh...
    En faisant clic droit sur le fichier, onglet build, tout est bien coché ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par germinolegrand Voir le message
    mmh...
    En faisant clic droit sur le fichier, onglet build, tout est bien coché ?
    Oui tout est bien coché.

    Je viens de trouver mon erreur.

    En fait je travaille sur un MAC, sous Parallel pour avoir l'environnement Windows. Code::Blocks est installé sous windows car mon application est destinée à un PC sous windows. Donc dans l'environnement Windows (Parallel), j'ai installé la librairie GTK+, sur le hdd c: , hors mon répertoire de travail était sur le disque y: (Mac)...

    J'ai déplacé mon répertoire de travail sur le c:, et désormais tout fonctionne

    Il faut désormais que je trouve, ou je peux indiquer dans code::blocks, les répertoire ou il doit faire ses recherches de fichiers lors de la compile/link...

    Merci pour ton aide

  6. #6
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Très simple (une fois qu'on le sait) : Build Options, choix de la target, Search directories, Compiler ou Linker.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Merci à toi pour ton aide

  8. #8
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Bonsoir
    j'avais le ^m prob et grace à vous Ms germinolegrand vous m'avez suve
    je veux juste vous remercie

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur R&D
    Inscrit en
    Janvier 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour, je viens de lire vos discussions et il se trouve que je rencontre le même problème, c'est à dire que j'essaye de développer une petite interface graphique avec GTK+ (sur codeblocks et sous windows), qui s'affiche bien lorsque je définie et déclare toutes mes variables et fonctions dans le même fichier main.cpp, mais dès que je le fais dans des fichiers header/ source, j'ai autant d'erreurs que de variables, qui me disent "undefined reference".

    J'ai suivi ce tuto : https://pub.phyks.me/sdz/sdz/creez-u...-avec-gtk.html à la lettre afin de télécharger GTK+, configurer codeblocks et enfin configurer mon projet. Je ne sais pas ce que j'ai loupé, et si cette erreur peut s'expliquer par une autre raison que celle d'une mauvaise configuration... Si ce n'est pas le cas, connaissez-vous un ou plusieurs autres tutoriels fiables pour que je refasse tout depuis le début?
    Je m'excuse si mes questions vous semble bêtes, je débute ^^"

    Le contenue de mon fichier main.cpp est le suivant:

    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
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include "IHM.h"
     
    int main(int argc, char **argv)
    {
     
        /* Initialisation de GTK+ */
     
        gtk_init(&argc, &argv);
        initialize();
     
        /* Signal connection */
     
        g_signal_connect(G_OBJECT(MainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        /* Display */
        gtk_widget_show_all(MainWindow);
     
        gtk_main();
     
        return EXIT_SUCCESS;
    }
    Celui de mon fichier IHM.h:

    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
    #ifndef IHM_H_INCLUDED
    #define IHM_H_INCLUDED
    #include <gtk/gtk.h>
     
    /* FUNCTIONS*/
     
        extern void initialize();
     
     
    /* VARIABLES */
     
        extern GtkWidget* MainWindow;
        extern GtkWidget* MainTable;
        extern GtkWidget* label_rot;
        extern GtkWidget* label_trans;
        extern GtkWidget* label_speed_rot;
        extern GtkWidget* label_speed_trans;
        extern GtkWidget* label_stroke_trans;
        extern GtkWidget* label_stroke_rot;
        extern GtkWidget* label_diameter;
        extern GtkWidget* entry_speed_trans;
        extern GtkWidget* entry_speed_rot;
        extern GtkWidget* entry_stroke_trans;
        extern GtkWidget* entry_stroke_rot;
        extern GtkWidget* entry_diameter;
        extern GtkWidget* button_stop;
        extern GtkWidget* button_go;
        extern GtkWidget* button_calibrate;
        extern GtkWidget* button_reference;
        extern GtkWidget* button_clamp;
        extern GtkWidget* button_unclamp;
     
     
    #endif // IHM_H_INCLUDED
    et celui du IHM.cpp:

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #include "IHM.h"
     
    /* FUNCTIONS */
     
    void initialize()
    {
        GtkWidget* MainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     
        /* Title and size of the window*/
        gtk_window_set_default_size(GTK_WINDOW(MainWindow), 800 ,500);
        gtk_window_set_title(GTK_WINDOW(MainWindow), "Control console");
     
        /* Creation of a table to place the different Widgets*/
        MainTable=gtk_table_new(12, 8, TRUE);
        gtk_container_add(GTK_CONTAINER(MainWindow), GTK_WIDGET(MainTable));
     
        /* Entry */
        entry_speed_trans= gtk_entry_new();
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(entry_speed_trans), 1, 2, 3, 4, GTK_EXPAND , GTK_EXPAND, 0, 0);
     
        entry_speed_rot= gtk_entry_new();
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(entry_speed_rot), 6, 7, 3, 4, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        entry_stroke_trans= gtk_entry_new();
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(entry_stroke_trans), 1, 2, 6, 7, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        entry_stroke_rot= gtk_entry_new();
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(entry_stroke_rot), 6, 7, 6, 7, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        entry_diameter= gtk_entry_new();
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(entry_diameter), 3, 5, 8, 9, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        /* Label */
        label_trans = gtk_label_new("TRANSLATION");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(label_trans), 0, 3, 0, 1, (GTK_EXPAND), (GTK_EXPAND), 0, 0);
     
        label_rot=gtk_label_new("ROTATION");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(label_rot), 5, 8, 0, 1, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        label_speed_trans=gtk_label_new("Speed (mm/s) : ");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(label_speed_trans), 1, 2, 2, 3, GTK_EXPAND, GTK_EXPAND , 0, 0);
        label_speed_rot=gtk_label_new("Speed (mm/s) : ");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(label_speed_rot), 6, 7, 2, 3, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        label_stroke_trans=gtk_label_new("Target position (mm) : ");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(label_stroke_trans), 1, 2, 5, 6, GTK_EXPAND, GTK_EXPAND, 0, 0);
        label_stroke_rot=gtk_label_new("Target position (mm) : ");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(label_stroke_rot), 6, 7, 5, 6, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        label_diameter = gtk_label_new("Catheter diameter (mm) (Press ENTER after writing the value):");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(label_diameter), 3, 5, 7, 8, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        /* Buttons */
        button_go= gtk_button_new_with_label("GO");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(button_go), 1, 3, 10, 11, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        button_stop= gtk_toggle_button_new_with_label("STOP");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(button_stop), 5, 7, 10, 11, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        button_calibrate= gtk_button_new_with_label("CALIBRATING (do it at the FIRST start)");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(button_calibrate), 3, 5, 5, 6, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        button_reference= gtk_button_new_with_label("REFERENCING (do it BEFORE inserting the catheter)");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(button_reference), 3, 5, 4, 5, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        button_clamp= gtk_button_new_with_label("CLAMP");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(button_clamp), 3, 5, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0);
     
        button_unclamp= gtk_button_new_with_label("UNCLAMP");
        gtk_table_attach(GTK_TABLE(MainTable), GTK_WIDGET(button_unclamp), 3, 5, 2, 3, GTK_EXPAND, GTK_EXPAND, 0, 0);
    }

    J'ai bien rajouté mes fichier IHM.h et IHM.cpp à mon projet, tout est bien coché pour les fichiers dans l'onglet build..
    Je vous remercie par avance, et espère ne pas vous faire perdre votre temps...

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

Discussions similaires

  1. "undefined reference to" fonction sous code::blocks
    Par Lerrak dans le forum Langage
    Réponses: 4
    Dernier message: 10/06/2014, 14h35
  2. Undefined reference avec code blocks
    Par Airlink dans le forum Débuter
    Réponses: 1
    Dernier message: 14/06/2008, 19h40
  3. Réponses: 2
    Dernier message: 23/04/2007, 22h37
  4. [kjAPI] Compilation avec Code::Blocks
    Par ThomasCh dans le forum Moteurs 3D
    Réponses: 5
    Dernier message: 17/10/2006, 09h01
  5. [débutant]impossible d'éxecuter avec Code::blocks!
    Par Antigonos Ier Gonatas dans le forum Code::Blocks
    Réponses: 6
    Dernier message: 31/05/2006, 19h53

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