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 :

Définition multiples des fonctions


Sujet :

C

  1. #1
    Membre à l'essai
    Définition multiples des fonctions
    Bonjour à tous !!

    je viens à vous car après maintes recherches et nuit passée à régler mes soucis de compilation et librairie, j'ai un erreur que je n'arrive pas à résoudre.

    j'essais donc de compiler mon programme avec cette commande :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    gcc  MainFile.c hash.c fileUpload.c IsGoodDate.c MysqlFile.c ParseFile.c token.c -o test1  pkg-config gtk+-3.0 --cflags pkg-config --libs gtk+-3.0 pkg-config gmodule-2.0 --libs pkg-config --libs --cflags libcurl  mysql_config --cflags --libs  -L/usr/lib -ljson-c -ljson-c -lcrypto -openssl


    et voici l'erreur que cela m'affiche :

    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
    /usr/bin/ld : /tmp/ccpuZpaH.o : dans la fonction « hash » :
    hash.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x0) : définitions multiples de « hash »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xce6) : défini pour la première fois ici
    /usr/bin/ld : /tmp/cctpfqCQ.o : dans la fonction « uploadFile » :
    fileUpload.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xd2) : définitions multiples de « uploadFile »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x505) : défini pour la première fois ici
    /usr/bin/ld : /tmp/ccjoqm9Z.o : dans la fonction « isObsolete » :
    IsGoodDate.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x0) : définitions multiples de « isObsolete »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xe02) : défini pour la première fois ici
    /usr/bin/ld : /tmp/ccjoqm9Z.o : dans la fonction « isGoodDate » :
    IsGoodDate.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xce) : définitions multiples de « isGoodDate »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xed0) : défini pour la première fois ici
    /usr/bin/ld : /tmp/ccjoqm9Z.o : dans la fonction « simple » :
    IsGoodDate.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x33d) : définitions multiples de « simple »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x113f) : défini pour la première fois ici
    /usr/bin/ld : /tmp/ccrzKsK9.o : dans la fonction « mysql » :
    MysqlFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x0) : définitions multiples de « mysql »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x9a7) : défini pour la première fois ici
    /usr/bin/ld : /tmp/ccbKNepj.o : dans la fonction « ParseJsonFile » :
    ParseFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x0) : définitions multiples de « ParseJsonFile »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xd2) : défini pour la première fois ici
    /usr/bin/ld : /tmp/ccbKNepj.o : dans la fonction « writeFunction » :
    ParseFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x3df) : définitions multiples de « writeFunction »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4b1) : défini pour la première fois ici
    /usr/bin/ld : /tmp/ccIZeI7s.o : dans la fonction « main » :
    token.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x0) : définitions multiples de « main »; /tmp/cckWYEPx.o:MainFile.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1e1c) : défini pour la première fois ici
    collect2: error: ld returned 1 exit status



    En vous remerciant !

  2. #2
    Expert éminent sénior
    Bonjour
    Citation Envoyé par nashad Voir le message
    et voici l'erreur que cela m'affiche :
    D'après les messages, il semble que tes fonctions "hash", "uploadFile", "isObsolete" et toutes les autres citées sont définies plusieurs fois. Malheureusement sans le source...

    Il se peut que l'erreur vienne de compilations non terminées lors de tes divers essais. Essaye de supprimer tous tes ".o" et recompiler...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

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

    Bonjour,

    Il se peut aussi qu'il n'y ai pas les garde sur les entêtes, du style : #pragma once.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre à l'essai
    Merci à vous ! du coup j'ai plus que quelque warning ! le problème venait des fichiers .c qui répétait le main, ou qui ne servait a rien, du coup un petit coup de clean et ça compile, par contre, je ne sais pas si je fais bien ma commande, mais je n'obtient aucun executable en passant cette commande :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    gcc  MainFile.c hash.c fileUpload.c IsGoodDate.c MysqlFile.c ParseFile.c FirstTestParse.c  -o test1  `pkg-config gtk+-3.0 --cflags` `pkg-config --libs gtk+-3.0` `pkg-config gmodule-2.0 --libs` `pkg-config --libs --cflags libcurl`  `mysql_config --cflags --libs`  -L/usr/lib -ljson-c -ljson-c -lcrypto -openssl

  5. #5
    Expert éminent sénior
    L'exécutable est sensé se nommer "test1". Donc soit il est créé, soit la compilation se termine en erreur et les erreurs s'affichent...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  6. #6
    Membre à l'essai
    Alors mis à part un warning ( ce qui devrait normalement crée l'exécutable) je n'ai rien qui apparait..aucun fatal error rien..

  7. #7
    Membre actif
    Bonjour,

    Es tu sur que la partie avec pkg-config est correcte ça peut vite être foireux si je me souvient bien.
    L'exécution de gcc ne retourne rien du tout du tout ?

  8. #8
    Membre à l'essai
    Bah écoute...honnêtement au point ou j'en suis, je sais pas du tout...je sais pas si je dois modifier ma ligne de compilation. j'ai essayer de rajouter des options en plus, mais rien de rien, aucun exécutable de crée.

  9. #9
    Membre actif
    Exécute dans un terminal ces commandes seules
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    pkg-config --cflags gtk+-3.0

    et
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    pkg-config --libs gtk+-3.0

    et
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    mysql_config --cflags --libs

  10. #10
    Membre à l'essai
    Voici le résultat de chaque commande :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    nashad@nashad-linux:~/Documents/FoodWasteApp$ pkg-config --cflags gtk+-3.0
    -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/libdrm -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
     
    nashad@nashad-linux:~/Documents/FoodWasteApp$ ^C
     
    nashad@nashad-linux:~/Documents/FoodWasteApp$ pkg-config --libs gtk+-3.0
    -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
     
     
    nashad@nashad-linux:~/Documents/FoodWasteApp$ mysql_config --cflags --libs
    -I/usr/include/mysql 
    -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -latomic -ldl

  11. #11
    Membre actif
    tu as deux -ljson-c dans ta ligne.
    Je suis étonné que dans pkg-config --libs gtk+-3.0 il n'y ai pas de -L du tout.

    Tu as essayé de compiler un projet GTK+ minimal (juste un main, avec que GTK+) ?

  12. #12
    Membre à l'essai
    Alors ! du coup je viens de faire un test avec un example de code minimal sur le site gtk gnome, et oui ça compile.

###raw>template_hook.ano_emploi###