[C] problème de #include

Résolu/Fermé
Fabien - 11 août 2007 à 09:11
 Fabien - 13 août 2007 à 10:21
Bonjour!

J'ai besoin d'utiliser dans mon programme une fonction ... gsl_fit_linear( ... ) que j'ai trouvé dans le package GSL pour devc++.

Je pensais que faire un include du header ou est prototypée cette fonction (#include <gsl/gsl_fit.h> ) était suffisant pour avoir le droit d'utiliser cette fonction après.

Le #include<gsl/gsl_fit.h> à l'air de passer à la compilation car le compilateur ne dit pas que le fichier n'existe pas, mais lorsque j'appelle la fonction désirée, il me lance un

[linker error] undefined reference to gsl_fit_linear()

Il y a-t-il autre chose à faire pour linker les fichier? "tout reconstruire" n'a pas l'air d'aider.

Sinon je suppose queje peux copier-coller la fonction et la mettre au-dessous de mon main() si j'arrive à trouver où elle est définie.

Merci beaucoup!

2 réponses

meuhlol Messages postés 1896 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 30 novembre 2021 672
11 août 2007 à 09:18
A vrai dire je n'ai pas touché à la prog y a un bail (plus de 2 ans a peu près), mais il me semble qu'il y a quelques parts dans les config du soft l'endroit ou tu précises où chercher des "libs", "headers" et le reste. Voir peut-être la dedans.
Ou mettre gsl_fit.h dans le dossier du projet et faire un #include gsl_fit.h
0
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
11 août 2007 à 14:46
Alors pour utiliser une librairie externe il faut trois choses :

1) l'emplacement des headers, pour que le #include passe (options -I ou -isystem). Là c'est ok apparemment. Par exemple si j'ai besoin des headers dans /usr/include/boost :
-I/usr/include/boost

2) l'emplacement des binaires des librairies (option -L et -Wl,R) qui ne sont pas dans un répertoire standard. Par exemple si ma librairie (.so, .a, .dll...) est dans le répertoire ../stage/lib :
-L../stage/lib -Wl,-R../stage/lib

3) les binaires des librairies utilisées (.a, .so ou .dll). Par exemple si j'utilise ../stage/lib/libplop.so :
-lplop

Dans ton cas c'est donc les points 2 et 3 qui te concernent (au moins le 2).

Bonne chance
0
Merci beaucoup pour le coup de pouce. Je vais suivre ces conseils et je vais surement finir par y arriver.

Fabien
0