>>//----- сборка пользователя -----
>>gcc -Wall -o libuser_c libuser.c -L. -lmylib
>
>-lstdc++ Заработало. Спасибо!
Только еще надо было добавить
extern "C" { _здесь_ф-ии_которые_будут_вызываться_из_С_кода_ }
В итоге пример пользования таков:
//----- исходник библиотеки -----
//file: mylib.cpp
#include <stdio.h>
class MyClass
{
public:
MyClass() { printf("Constructor MyClass.\n"); }
~MyClass() { printf("Destructor MyClass.\n"); }
};
extern "C"
{
void lib_print(int i)
{
MyClass a;
printf("Hello, boss. Incomming parameter id %d.\n", i);
}
}
//----- исходник пользователя библиотекой -----
//file: libuser.c
void lib_print(int i);
int main()
{
lib_print(20);
return 0;
}
//----- сборка либы -----
g++ -Wall lib.cpp -c
ar rc libmylib.a lib.o
ranlib libmylib.a
//----- сборка пользователя -----
gcc -Wall -o libuser_c libuser.c -L. -lmylib -lstdc++
Вывод на консоль:
./libuser_c
Constructor MyClass.
Hello, boss. Incomming parameter id 20.
Destructor MyClass.
Пэ.Эс. У меня gcc не знал где искать libstdC++.a и пришлось добывить в сборку пользователя путь к ней -L/usr/lib/gcc/i386-redhat-linux/4.3.0/