bibliotecas....

Salvador Ortiz Garcia sog en msg.com.mx
Lun Oct 9 22:36:57 CDT 2000


On Mon, 9 Oct 2000, Rodolfo Conde Martinez wrote:

> 
> 
> 	Hola......
> 	
> 
> 	Hace ya tiempo que no escribo a la lista....tengo una pequen~a duda, trato 
> de: primero hacer una biblioteca compartida, los comandos que doy son:
> 
> 	g++ -I../include -c -fPIC -DPIC lib.cxx
> 	g++ -shared -lotherlib -o libmylib.so.0 lib.o
> 	ar rcs libmylib.a lib.o
> 
> 	luego cuando trato de compilar un programa que usa esta biblioteca:
> 
> 	g++ -I../include -c app.cxx
> 	g++ -L../lib/ -lmylib -lotherlib -o app app.o
> 
> 	pero ld parece no encontrar una funciones en mi biblioteca:
> 
> /tmp/ccumzRhb.o(.text+0x7b9): undefined reference to `func_in_my_lib(xxxx)'
> 
> 	Alguien sabe que falta ?? Algo que no hice bien... ?? 

Mira, según recuerdo (no programo en C++ desde hace años) la cosa es mas o
menos  así:

Cuando quieres que una serie de funciones _simples_ (a la C) queden como
externas en una biblioteca dinámica requieres declararlas como:

   extern "C" ...

o dentro de un bloque

   extern "C" {
   ...
   }

puesto que C++ normalmente hace 'name mangling' (por aquello del overload 
y las funciones virtuales) y de ahí que el linker no las encuentre.

Si usas esa construcción para tu lib.cxx y _su correspondiente lib.h_, no
deberás tener ningun problema.

Espero que eso resuelva tu problema.

Saludos

Salvador Ortiz

---------------------------------------------------------
para salir de la lista, enviar un mensaje con las palabras
"unsubscribe ayuda" en el cuerpo a majordomo en linux.org.mx




Más información sobre la lista de distribución Ayuda