lib static - C++ - Programmation
Marsh Posté le 21-05-2002 à 08:46:35
Peut être que ton problème viens des headers (.h). 
Quand des fonctions sont compilées avec un compilo C et que l'on veut les utiliser avec un compilo C++, alors il faut changer les headers pour indiquer que ce sont des fonctions C et non pas C++: 
 
au lieu de  
--------------------- 
#ifndef HEADER_H 
#define HEADER_H 
 
int fonction1( int a ); 
int fonction2( char * pchar ); 
 
#endif 
--------------------- 
 
il faut écrire: 
 
--------------------- 
#ifndef HEADER_H 
#define HEADER_H 
 
if defined _cplusplus 
extern "C" 
{ 
#endif 
 
int fonction1( int a ); 
int fonction2( char * pchar ); 
 
if defined _cplusplus 
} 
#endif 
 
#endif 
--------------------- 
 
 
En fait, le compilo C++ fait une "décoration" du nom de la fonction, contrairement au compilateur C. Cela vient du fait qu'en C++, tu peut tout à fait définir 2 fonctions qui ont le même nom: 
int fonction( int a); 
int fonction( int a, int b); 
 
le compilateur saura quelle fonction choisir en fonction des arguments passés lors de l'appel. Ceci est interdit en C. Pur autoriser cela, le compilateur "décore" le nom des fonctions. 
 
 
 
Autre solution: compiler ta lib static avec un compilo C++ et non pas C. 
 
 
J'espère que cela t'aidera. 
a+ 
Marsh Posté le 21-05-2002 à 09:18:39
Ok, merci, mais je compile deja avec "c++" le compilo c++ de 
gcc, en fait c'est juste qd je transforme le .c en .cpp, juste 
le nom..., faut cependant que je verifie les headers... 
Marsh Posté le 20-05-2002 à 23:36:02
Salut! bon c'est tout con,
mais je ne trouve pas de solution,
comment fait-t-on lorsque un fichier (sous gcc et linux)
compile avec une lib static, lorsque ce fichier est en c....
et que s'il est en c++, (change l'extension en cpp),
bah ca marche plus, j'ai des undefined ref a toute les fcts
que j'utilise appartenant à la lib en clair,
en c ca marche, en c++, ca marche plus,
sachant que je veux du c++... peut-on remedier a ca?