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
Afficher la suite