Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre habitué
    Inscrit en
    décembre 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 243
    Points : 101
    Points
    101

    Par défaut [gcc] problème linker

    Bonjour,

    J'essaie de me mettre au C et j'ai quelques problème de démarrage.
    Je suis sous windows, j'ai installé mingw.
    J'arrive à compiler mes fichiers .c avec la commande J'arrive à créer un exe avec la commande Le tout avec un fichier très simple.
    Maintenant je voudrais utiliser un fichier.c qui fait appelle à une librairie ajouté. J'ai un fichier.lib est une dll.
    quand je passe les commandes :
    Code :
    gcc -o monexe.exe monchier.c
    ou
    Code :
    gcc -o monexe.exe -I"C:\WINDWS\system32" monchier.c
    ou
    Code :
    gcc -o monexe.exe -L"Chemin du fichier.lib" monchier.c
    j'ai comme réponse :
    Code :
    undefined reference to la fonction
    J'ai lu sur le web que c'était un problème de linker mais je n'ai pas trouvé comment indiquer la référence correctement.

    merci d'avance.

  2. #2
    Membre habitué
    Inscrit en
    décembre 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 243
    Points : 101
    Points
    101

    Par défaut

    bonjour,

    ça sera peut être plus explicite avec la commande :
    Code :
    gcc -o monexe.exe -I"C:\WINDOWS\system32" fichier.c -W -Wall -ansi -pedantic
    voici la réponse :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    In file included from p16R16.H :2
                                      from fichier.c:6:
    C:/mingw/bin/................/include/stdlib.h:317:error:syntax error before "double"
    fichier.c: In fonction 'main' :
    fichier.c:23 warning: implicit declaration of fonction 'clrscr'
    fichier.c:23: error syntax error before '/' token
    fichier.c:38 warning: comparison between signed and unsigned
    fichier.c:92 warning:  implicit declaration of fonction 'delay'
    fichier.c:92: error syntax error before '/' token
    fichier.c:97: error syntax error before '/' token
    fichier.c:102: error syntax error before '/' token
    fichier.c:107: error syntax error before '/' token
    fichier.c:10 warning: unused variable 'j'

  3. #3
    Membre émérite
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 972
    Points
    972

    Par défaut

    Code :
    gcc -o monexe.exe -I"C:\WINDOWS\system32" fichier.c -W -Wall -ansi -pedantic
    Ca m'inquiète que tu sois obligé d'aller chercher des headers dans C:\WINDOWS\system32. Tu es sûr de ton coup ?


    Je décode le reste. Pour le moment, ce ne sont pas des erreurs de compil' mais des erreurs de link.

    >In file included from p16R16.H :2
    > from fichier.c:6:
    >C:/mingw/bin/................/include/stdlib.h:317:error:syntax error before >"double"
    Hum... ça ne sent vraiment pas bon. Une erreur de compil' dans les headers standards. Il faudrait voir tes fichiers...

    >fichier.c: In fonction 'main' :
    >fichier.c:23 warning: implicit declaration of fonction 'clrscr'
    clrscr est une fonction de la bibliothèque conio.
    Tu dois inclure conio.h.
    Tu trouveras plus d'infos ici http://conio.sourceforge.net/

    > fichier.c:23: error syntax error before '/' token
    Erreur de compilation... à corriger bien évidemment.

    > fichier.c:38 warning: comparison between signed and unsigned
    > fichier.c:92 warning: implicit declaration of fonction 'delay'
    Ouais... je ne sais pas trop. Tu dois avoir récupéré du C pour Turbo C.

    fichier.c:92: error syntax error before '/' token
    fichier.c:97: error syntax error before '/' token
    fichier.c:102: error syntax error before '/' token
    fichier.c:107: error syntax error before '/' token
    fichier.c:10 warning: unused variable 'j'


    A la lecture des erreurs, j'ai l'impression que tu as récupéré un cours s'appuyant sur Turbo C. Certaines fonctions proposées par Turbo C, comme delay, ne sont pas disponibles sur mingw, qui est plus soucieux des standards. D'où vient ce cours et de quand date t'il ?

    Je te conseille de jeter un coup d'oeil aux cours de developpez.com
    http://c.developpez.com/cours/

  4. #4
    Membre émérite
    Inscrit en
    mars 2005
    Messages
    865
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 865
    Points : 972
    Points
    972

    Par défaut

    Après avoir rapidement googlelisé; j'ai découvert que P16R16.h était un fichier en relation avec le développement de cartes PCI sous Turbo C.
    Tu fais de l'électronique ?

  5. #5
    Membre habitué
    Inscrit en
    décembre 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 243
    Points : 101
    Points
    101

    Par défaut

    salut,

    bon tu as vu juste! je croyais que le turbo C était compatible avec le C.

    En ce qui concerne mon projet, je dois réaliser une JNI pour intégrer une carte PCI, en l'occurence PCI-P8R8, dans le code java d'une application. Et évidemment je code en java et pas en C.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •