math.h

math.h - C - Programmation

Marsh Posté le 25-04-2006 à 15:34:13    

bonjour,
 
je dois utiliser la fonction double sqrt(double d) de la  bibliotheque math.h. Je mets donc  #include <math.h> en tete de mon programme
 
ca compile bien mais à l'exécution ca me met en mode debug (je suis sous visual studio 6.0) CXX0017 : Error : symbol "sqrt" not found
 
help

Reply

Marsh Posté le 25-04-2006 à 15:34:13   

Reply

Marsh Posté le 25-04-2006 à 15:37:16    

Linké avec -lm ?

Reply

Marsh Posté le 25-04-2006 à 15:42:05    

Elmoricq a écrit :

Linké avec -lm ?


 
euh en fait je commence tout juste le C, donc je sais pas ce que veut dire linké
 

Reply

Marsh Posté le 25-04-2006 à 15:48:41    

ca veut dire qu'une fois que le compilateur vérifié que tout tes appels de fonctions, syntaxe et autre sont corrects, il va pointer ton appel à sqrt vers une adresse de la lib math: c'est le link;
 
si tu ne lui spécifie que le .h et pas de lib, il peut seulement vérifier que syntaxiquement tout est correct, mais pas faire pointer ton appel vers une bonne adresse.

Reply

Marsh Posté le 25-04-2006 à 15:51:38    

(et donc -lm c'est pour linker la lib de math, voir option -l du compilateur)

Reply

Marsh Posté le 25-04-2006 à 15:56:05    

c'est pour ça qu'il est important de faire la différence entre bibliothèque et fichier d'en-tête.
 
math.h est seulement un fichier d'en-tête (header) qui te permet de déclarer au compilateur les prototypes des fonctions. ceci est nécessaire pour la phase de compilation.
Les fonctions ne sont réellement définies que dans la bibliothèque correspondante (par ex. libm.a / .so). C'est ce fichier qui est nécessaire pour l'édition des liens.


---------------
TriScale innov
Reply

Marsh Posté le 25-04-2006 à 15:59:50    

ok
 
mais je ne peux pas savoir si le link est fait entre l'en tete et la bibliotheque pcq je suis sous visual c++
Je vais demander au service info de ma boite si c'est le cas
 
merci

Reply

Marsh Posté le 25-04-2006 à 16:02:26    

skelter a écrit :

je ne peux pas savoir si le link est fait entre l'en tete et la bibliotheque pcq je suis sous visual c++


 
T'as lu ce qui était écrit ? [:pingouino]
 
 

Reply

Marsh Posté le 25-04-2006 à 16:20:46    

skelter a écrit :

ok
 
mais je ne peux pas savoir si le link est fait entre l'en tete et la bibliotheque pcq je suis sous visual c++
Je vais demander au service info de ma boite si c'est le cas
 
merci


 
Le link c'est au niveau de la compilation, tu dois utiliser -lm : "-l => lier une bibliothèque", "m => fichier libm" (.dll, .so, .a ou whatever, ça dépend du système et de la méthode de liage)

Reply

Marsh Posté le 25-04-2006 à 23:11:57    

Un peu gros quand même :o
Bon anniversaire ?

Reply

Marsh Posté le 25-04-2006 à 23:11:57   

Reply

Marsh Posté le 26-04-2006 à 00:30:43    

Ben, j'avoue que je me pose la question. Genre j'ai fini par en déduire que j'ai dû croiser skelter sur une autre cat de programmation. Ou alors il s'est fait voler son pseudo. Sinon des aliens l'ont enlevé pour faire des expériences, je sais pas. :o

Reply

Marsh Posté le 26-04-2006 à 09:16:08    

yen a qu'on plusieurs pseudo, d'autre qui sont plusieurs derriere un speudo

Reply

Marsh Posté le 26-04-2006 à 10:46:47    

skelter a écrit :

yen a qu'on plusieurs pseudo, d'autre qui sont plusieurs derriere un speudo


Y'en a aussi qui n'ont pas de pseudo, c'est plus clair..
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 26-04-2006 à 17:14:57    

lol :D
 
j'avoue qu'au début j'étais surpris, mais je me suis quand même bien fait avoir...

Reply

Marsh Posté le 26-04-2009 à 11:54:17    

Bonjour,
Je fais remonter le topic à propos de ces liens genre -lm...
Je m'amuse à commencer la programmation avec des programmes tous bidons genre calculs d'une équation du second degré (delta tout ça...)

 

Il y  a des arguments à faire passer à gcc pour toutes les bibliothèques?

 

Deuxième question: comment connaitre tous les arguments de gcc.
(-l ne marche pas chez moi..)

 

Bon appétit !
Merci d'avance.

 

(ceci n'est pas un fake)

Message cité 1 fois
Message édité par Solcarlus le 26-04-2009 à 11:55:00
Reply

Marsh Posté le 26-04-2009 à 13:01:14    

-l fonctionne forcement sur gcc
 
Documentation : "man gcc" dans la console.

Reply

Marsh Posté le 29-04-2009 à 12:55:11    

Solcarlus a écrit :

Bonjour,
Je fais remonter le topic à propos de ces liens genre -lm...
Je m'amuse à commencer la programmation avec des programmes tous bidons genre calculs d'une équation du second degré (delta tout ça...)
 
Il y  a des arguments à faire passer à gcc pour toutes les bibliothèques?


Par défaut le lien est fait avec la libc.

Citation :

Deuxième question: comment connaitre tous les arguments de gcc.


En lisant la doc...Google est ton ami...

Citation :

(-l ne marche pas chez moi..)


Tout court, non, évidemment. C'est -lm ou, plus généralement -l<nom court de bibliothèque>
 
Montre ta ligne de commande exacte et le message d'erreur..


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 29-04-2009 à 13:21:12    

Bonjour,
 
je n'ai pas de message d'erreur. Je ne comprenais juste pas exactement à quoi correspondait -l.
Maintenant j'ai compris.
 
Google est mon ami oui , c'est grâce à lui que j'ai trouvé le lien vers ce topic.
 
Thanks.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed