[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: bibliotecas....



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



[Hilos de Discusión] [Fecha] [Tema] [Autor]