[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

linkowanie C i C++



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


Reply to: