Shared Library

Résolu
omarlahlou Messages postés 3 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 22 novembre 2006 - 13 nov. 2006 à 16:34
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 13 nov. 2006 à 18:54
Bonjour tout le monde,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>





 





Je voulais créer une librairie partagée (Shared Library) en C++ sous Linux (Fedora 6) pour un petit projet HelloWord qui appelle une simple fonction (voir le code ci-dessous).





J’ai suivi les étapes suivantes pour créer la librairie:





 




gcc -Wall -fPIC -c *.c


gcc -shared -Wl,-soname,libctest.so.1 -o libctest.so.1.0   *.o


mv libctest.so.1.0 /opt/lib


ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so


ln -sf /opt/lib/libctest.so.1.0 /opt/lib/libctest.so.1


gcc -Wall -L/opt/lib Hello.cpp -lctest -o Hello


 



a la fin je reçois le massage suivant :





 




/tmp/cc900iU4.o: In function `__static_initialization_and_destruction_0(int, int)':


Hello.cpp:(.text+0x23): undefined reference to `std::ios_base::Init::Init()'


/tmp/cc900iU4.o: In function `__tcf_0':


Hello.cpp:(.text+0x6c): undefined reference to `std::ios_base::Init::~Init()'


/tmp/cc900iU4.o: In function `main':


Hello.cpp:(.text+0x8e): undefined reference to `std::cout'


Hello.cpp:(.text+0x93): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'


Hello.cpp:(.text+0x9b): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'


Hello.cpp:(.text+0xa3): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'


Hello.cpp:(.text+0xb2): undefined reference to `std::cout'


Hello.cpp:(.text+0xb7): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'


Hello.cpp:(.text+0xbf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'


Hello.cpp:(.text+0xc7): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'


Hello.cpp:(.text+0xd5): undefined reference to `std::cin'


Hello.cpp:(.text+0xda): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'


Hello.cpp:(.text+0xe9): undefined reference to `std::cout'


Hello.cpp:(.text+0xee): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'


Hello.cpp:(.text+0xf6): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'


Hello.cpp:(.text+0xfe): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'


Hello.cpp:(.text+0x10c): undefined reference to `std::cin'


Hello.cpp:(.text+0x111): undefined reference to `std::basic_istream<char, std::char_traits<char> >::operator>>(int&)'


Hello.cpp:(.text+0x120): undefined reference to `std::cout'


Hello.cpp:(.text+0x125): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'


Hello.cpp:(.text+0x12d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'


Hello.cpp:(.text+0x135): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'


Hello.cpp:(.text+0x158): undefined reference to `std::cout'


Hello.cpp:(.text+0x15d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(int)'


Hello.cpp:(.text+0x165): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'


Hello.cpp:(.text+0x16d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'


/tmp/cc900iU4.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'


collect2: ld returned 1 exit status





 







 





Hello.cpp




 




#include


#include "Function.h"


 


using namespace std;


 


int main(int argc, char *argv[])


{



            int a,b,c;



            cout << "Hello Dialexia" << endl;



            cout << "Enter a:" << endl;



            cin >> a;



           
cout << "Enter b:" << endl;






           
cin >> b;



            cout << "a + b =" << endl;



            c = sum(a,b);



           
cout << c << endl;






            return 0;





}







 







 





Function.cpp



 


#include "Function.h"


 


int sum( int a, int b) {


return a+b ;



}





 







 







 





Function.h


 


#ifndef FUNCTION_


#define FUNCTION_


 



int sum( int a, int b);





 





#endif /*FUNCTION_*/







 









Merci Beaucoup d'avance

1 réponse

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
13 nov. 2006 à 18:54
salut,

pour compiler ton Hello.cpp utilise g++ à la place de gcc...on compile du C avec GCC et du C++ avec G++...

ShareVB
3
Rejoignez-nous