Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1521 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  pressé : pb de compil : undefined reference to ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pressé : pb de compil : undefined reference to ...

n°1188380
nifnef
Posté le 31-08-2005 à 09:04:26  profilanswer
 

Bonjour,
 
bon, c'est plutot pressé comme aide, je n'arrive pas a compiler mon programme : il est composé de
main.cpp
FmVolume.cpp/hpp
gslRealign.cpp/hpp
gslReslice.cpp/hpp
opMatrix.cpp/hpp
 
et une biblio statique ecrite en C dont les fonctions dispo sont dans : spm_for_gsl.h
main:

Code :
  1. #include "FmVolume.hpp"
  2. #include "gslRealign.hpp"
  3. #include "gslReslice.hpp"
  4. #include "spmForGslLib/spm_for_gsl.h"


FmVolume:

Code :
  1. #include "gslHEADER.h"
  2. #include "opMatrix.hpp"
  3. #include "spmForGslLib/spm_for_gsl.h"


gslRealignet gslReslice :

Code :
  1. #include "FmVolume.hpp"
  2. #include "opMatrix.hpp"
  3. #include "spmForGslLib/spm_for_gsl.h"


 
ma ligne de compilation :
 g++ -Wall -lm spmForGslLib/spm_for_gsl.a opMatrix.cpp FmVolume.cpp gslRealign.cpp gslReslice.cpp main.cpp -o main
 
et donc j'ai comme erreur:

Code :
  1. In function `smoothVol(FmVolume, optionsRealign, double*)':: undefined reference to `gsl_spm_bsplinc'


et plein d'autres comme ça avec toutes les fonctions de ma biblio C...  :(  
je ne comprend pas ce qui va de travers!  
 
Je suis prete à tout essayer!

mood
Publicité
Posté le 31-08-2005 à 09:04:26  profilanswer
 

n°1188384
manatane
En vous remerciant, bonsoir
Posté le 31-08-2005 à 09:17:38  profilanswer
 

il me semble qu'il faut que tes fonctions C soient déclarées sous la forme :

Code :
  1. extern "C" {
  2.   prototype fonction 1
  3.   ...
  4. }


Message édité par manatane le 31-08-2005 à 09:18:12
n°1188385
chrisbk
-
Posté le 31-08-2005 à 09:21:03  profilanswer
 

manatane > au vu de l'erreur de link (symbole sans décoration) je doute que ca soit ca le pb

n°1188386
chrisbk
-
Posté le 31-08-2005 à 09:21:59  profilanswer
 

d'ailleurs je vois pas la biblio C sur sa ligne de commande ?

n°1188388
nifnef
Posté le 31-08-2005 à 09:22:58  profilanswer
 

mon spmForGslLib/spm_for_gsl.h est construit comme ca:

Code :
  1. #ifndef _SPM_FOR_GSL_H_
  2. #define _SPM_FOR_GSL_H_
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include "spm_vol_access.h"
  7. typedef struct vol_to_be_mapped
  8.   {
  9. /* ... */
  10.   } VOLMAP;
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. /*Protos*/
  16. #ifdef __cplusplus
  17. }
  18. #endif
  19. #endif   /* _SPM_FOR_GSL_H_  */

n°1188390
nifnef
Posté le 31-08-2005 à 09:24:28  profilanswer
 

spmForGslLib/spm_for_gsl.a   <-- ma biblio
(je me suis inspirée du site Leahttp://lea-linux.org/dev/libc.html ...)
j'ai peut etre pas mis dans le bon ordre...


Message édité par nifnef le 31-08-2005 à 09:28:05
n°1188394
chrisbk
-
Posté le 31-08-2005 à 09:27:47  profilanswer
 

ah désolé, j'avais pas vu. Ca marche ca ? d'hab je passe par -l, genre
 
-lspmForGslLib/spm_for_gsl.a
 
(pis je me demande si avec ces outils evolués fo pas que nom de la lib commence par "lib" )

n°1188404
Elmoricq
Modérateur
Posté le 31-08-2005 à 09:45:23  profilanswer
 

chrisbk a écrit :

(pis je me demande si avec ces outils evolués fo pas que nom de la lib commence par "lib" )


 
Me semble que si, et sans l'extension.
 
Genre pour la libm.a/libm.so, on utilise l'option "-lm"
De même si la bibliothèque est présente dans un répertoire qui ne figure pas dans la variable $LD_LIBRARY_PATH, il faut inclure le répertoire en question avec l'option -L
 
L'idéal serait de compiler avec :

g++ -Wall -L./spmForGslLib -lm -lspm_for_gsl opMatrix.cpp FmVolume.cpp gslRealign.cpp gslReslice.cpp main.cpp -o main


 
Avec le fichier "libspm_for_gsl.a" dans le répertoire "./spmForGslLib" (remplacer "./" avec le répertoire qui_va_bien)
 
En espérant que ce ne soit pas la seule erreur...


Message édité par Elmoricq le 31-08-2005 à 09:53:42
n°1188405
nifnef
Posté le 31-08-2005 à 09:47:08  profilanswer
 

Elmoricq a écrit :


 
En espérant que ce ne soit pas la seule erreur...

 <--- moi j'espere que si!

n°1188407
Elmoricq
Modérateur
Posté le 31-08-2005 à 09:48:05  profilanswer
 

Euh, oui. C'est le matin, pas pris mon café tout ça... [:elmoricq]

mood
Publicité
Posté le 31-08-2005 à 09:48:05  profilanswer
 

n°1188414
nifnef
Posté le 31-08-2005 à 09:54:16  profilanswer
 

mouarf ... pas d'evolution, par contre tout a l'heure j'ai essayé en changeant l'ordre et j'ai eu pleins d'erreur dans ma biblio...  
bon, je pense que ca vient de la biblio, mal compilée elle aussi...
je vois ça...
bon ben voilà, c'est dans la biblio que ca merdouille.
J'espere ne pas vous avoir fait perdre votre temps,
Merci à tous!
 
 
pouah! il faut que je retroune dans le code tout crado de l'autre fois (avec mes tonnes de define )
 :sweat:     :cry:


Message édité par nifnef le 31-08-2005 à 09:57:44
n°1188465
nifnef
Posté le 31-08-2005 à 10:51:29  profilanswer
 

Savez-vous comment faire remonter les printf de la biblio en C,  comment binder avec cout/cerr?

n°1188470
chrisbk
-
Posté le 31-08-2005 à 10:55:02  profilanswer
 

huh ? tu peux developper ?

n°1188500
nifnef
Posté le 31-08-2005 à 11:19:17  profilanswer
 

mes messages d'erreur avec mes printf sont affichés normalement par mon code c++? ou bien est-ce qu'il faut les "transformer" en cout?

n°1188568
blackgodde​ss
vive le troll !
Posté le 31-08-2005 à 12:16:36  profilanswer
 

il me semble que c'est déconseillé de mélanger les I/O C et C++


---------------
-( BlackGoddess )-
n°1188690
chrisbk
-
Posté le 31-08-2005 à 15:01:34  profilanswer
 

pour un peu que chacun bufferise dans son coin ...

n°1188839
matafan
Posté le 31-08-2005 à 17:03:50  profilanswer
 

En meme temps, si depuis du C++ t'utilises une lib qui fait des printfs, t'as pas trop le choix.

n°1188873
HelloWorld
Salut tout le monde!
Posté le 31-08-2005 à 17:23:42  profilanswer
 

Y'a sync_with_stdio. Normalement c'est le cas par défaut.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  pressé : pb de compil : undefined reference to ...

 

Sujets relatifs
Pascal : De string a Presse papier[RESOLU] probleme compil opengl / glut sous linux
Presse papier Excel"erreur $variable is undefined" => je ne comprend pas
[XML]-[XSL] Référence interfichierslink error - undefined reference to `std::ios_base::Init::Init()'
problème de référence ou version ou ...ERREUR Notice: Undefined index: matiere in c:\
Problème fonction php: Undefined variable 
Plus de sujets relatifs à : pressé : pb de compil : undefined reference to ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR