Bonjour,
Je suis (presque) complètement débutante en programmation et j'ai un problème (logique !)
J'ai déjà parcouru un peu le forum (fait des recherches) mais ça n'a pas résolu mon problème....
Je m'explique :
J'ai écrit un "code" qui utilise la librairie math.h (et aussi iostream et fstream sachant que pour iostream, c'est temporaire... le temps de trouver comment faire autrement)
Le problème :
Lorsque je compile avec gcc, j'ai soit une série interminable d'insultes, soit lorsque je retire le ".h" de math.h l'erreur suivante :Remarque :tmp/ccie1EHJ.o: dans la fonction « main »:
trucmuche.cpp: (.text+0x26): référence indéfinie vers « sin »
collect2: ld a retourné 1 code d'état d'exécution
A l'époque où j'ai eu quelques cours de C++, on nous avait dit que lorsqu'on avait une série d'insultes lors de la compilation, c'est qu'il fallait retirer le ".h" de certaines librairies. Et effectivement, à l'époque, ça marchait (mais ce n'était pas math.h qui m'insultait dans ce cas). C'est pour ça que j'ai essayé de compiler sans le ".h" de math.h.
Une solution :
J'ai trouvé sur le forum je crois, une solution très simple qui consiste à écrire la ligne de compilation suivante :
En voyant ça, j'ai tout de suite essayé..... mais ça ne change pas grand chose...
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc -lm -o truc 030507.cpp
Avec le ".h" ---> j'ai la série d'insultes;
Sans le ".h" ---> j'ai la réponse suivante :050307.cpp:1:16: erreur: math : Aucun fichier ou répertoire de ce type
050307.cpp: In function ‘int main()’:
050307.cpp:41: erreur: ‘atan’ was not declared in this scope
Le truc :
J'ai essayé d'écrire un programme très simple qui ne fait que calculer un sinus. Le seul include de ce programme, c'est le math.h
Lorsque je tape la ligne de compilation avec "-lm", ça marche. Aucune insulte, et il reconnait bien math.h.
De plus, pas plus tard que ce matin, j'ai recompilé un programme assez complexe (pas écrit par moi bien sûr...) à partir de son makefile et je n'ai pas eu de problème avec le math.h
Le programme qui me pose problème reprend certaines fonctions du programme complexe que j'ai compilé ce matin, pour le reste, ce sont essentiellement des gestions de flux.
Le includes présents dans mon code :
Bon, comme moi je suis plutôt débutante... je ne sais pas quoi faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #include <math.h> #include <iostream> #include <fstream>
Est-ce que ça peut venir non pas de math.h mais des deux autres librairies (qui ne sont présentes ni dans le code tout pourri qui m'a servi à tester la méthode avec le -lm et ni dans le programme complexe qui n'est pas de moi ?
J'espère que vous saurez m'éclairer ... En attendant, j'espère avoir été assez claire dans ce que je raconte..
Hibiscuit
Partager