Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > GCC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/11/2008, 08h14   #1
philippe13
Membre habitué
 
Inscription : décembre 2005
Messages : 237
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 237
Points : 100
Points : 100
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.
philippe13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2008, 09h06   #2
philippe13
Membre habitué
 
Inscription : décembre 2005
Messages : 237
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 237
Points : 100
Points : 100
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'
philippe13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2008, 22h35   #3
aoyou
Membre émérite
 
Inscription : mars 2005
Messages : 860
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 860
Points : 964
Points : 964
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/
aoyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2008, 22h44   #4
aoyou
Membre émérite
 
Inscription : mars 2005
Messages : 860
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 860
Points : 964
Points : 964
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 ?
aoyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2008, 14h31   #5
philippe13
Membre habitué
 
Inscription : décembre 2005
Messages : 237
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 237
Points : 100
Points : 100
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.
philippe13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h37.


 
 
 
 
Partenaires

Hébergement Web