Witam! Mam program w C++, który musi skorzystać z biblioteki statycznej napisanej w C, a więc 1. w pliku c.c jest funkcja fun_c() eksportowana jako: extern "C" void fun_c(void); 2. w pliku c++.cpp jest funkcja fun_cpp(), która woła funkcję fun_c() 3. kompilowanie: gcc -c c.c g++ -c c++.cpp g++ c.o c++.o -o wynik powodzi się i wszystko jest w porządku 4. jednak jak moduł c.o dodam do biblioteki ar rcs libC.a c.o i potem g++ lib.C.a c++.cpp -o wynik to podczas linkowania nie jest widoczna funkcja fun_c(), mimo że jest ona widoczna jako: T fun_c według symboli. 5. jeśli zrobię bibliotekę dynamiczną gcc -shared -o libdyn.so c.o i potem g++ -ldyn -L./ c++.o -o wynik to program linkuje się poprawnie Jakiś pomysł? Tak przy okazji linkowanie w drugą stronę też mi nie działa. gcc (GCC) 3.3.1 20030626 (Debian prerelease) g++ (GCC) 3.3.1 20030626 (Debian prerelease) GNU ar 2.14.90.0.4 20030523 Debian GNU/Linux Debian woody/sarge GNU testing/unstable -- mail: jacekd@platan.pl,jdanecki@poczta.onet.pl Registered Linux user number 137044 ----- End forwarded message ----- -- mail: jacekd@platan.pl,jdanecki@poczta.onet.pl Registered Linux user number 137044
Attachment:
pgppxH0aubfL_.pgp
Description: PGP signature