pressé : pb de compil : undefined reference to ... - C++ - Programmation
Marsh Posté le 31-08-2005 à 09:17:38
il me semble qu'il faut que tes fonctions C soient déclarées sous la forme :
Code :
|
Marsh Posté le 31-08-2005 à 09:21:03
manatane > au vu de l'erreur de link (symbole sans décoration) je doute que ca soit ca le pb
Marsh Posté le 31-08-2005 à 09:21:59
d'ailleurs je vois pas la biblio C sur sa ligne de commande ?
Marsh Posté le 31-08-2005 à 09:22:58
mon spmForGslLib/spm_for_gsl.h est construit comme ca:
Code :
|
Marsh Posté le 31-08-2005 à 09:24:28
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...
Marsh Posté le 31-08-2005 à 09:27:47
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" )
Marsh Posté le 31-08-2005 à 09:45:23
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...
Marsh Posté le 31-08-2005 à 09:47:08
ReplyMarsh Posté le 31-08-2005 à 09:54:16
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 )
Marsh Posté le 31-08-2005 à 10:51:29
Savez-vous comment faire remonter les printf de la biblio en C, comment binder avec cout/cerr?
Marsh Posté le 31-08-2005 à 11:19:17
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?
Marsh Posté le 31-08-2005 à 12:16:36
il me semble que c'est déconseillé de mélanger les I/O C et C++
Marsh Posté le 31-08-2005 à 17:03:50
En meme temps, si depuis du C++ t'utilises une lib qui fait des printfs, t'as pas trop le choix.
Marsh Posté le 31-08-2005 à 17:23:42
Y'a sync_with_stdio. Normalement c'est le cas par défaut.
Marsh Posté le 31-08-2005 à 09:04:26
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:
FmVolume:
gslRealignet gslReslice :
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:
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!