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

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

dlopen(), dlsym() & dlerror()



Holas!!

Ando haciendo una libreria muy sencilla de prueba, pero nomas no me funka... ya
antes habia hecho una que si funcionaba, pero esta vez no jala y no se que
estoy haciendo mal... les pego el fuente aqui rapidamente...

/*
* ESTA ES LA LIBRERIA CON 1 SOLA FUNCION (lib.cc)
*/
#include <stdio.h>

int sumar (int a, int b) {
return (a+b);
}

esta libreria la compilo de la siguiente forma:

g++ -fPIC -c lib.cc
g++ -shared -Wl,-soname,lib.so.1 -o lib.so.1 lib.o 



el programa de prueba es el siguiente:

#include <stdio.h>
#include <dlfcn.h>
 
int main (void) {
   void* handle = dlopen("./lib.so.1",RTLD_LAZY);
   if (!handle) {
      printf("\n%s",dlerror());
      return 0;
   }
 
   int(*s)(int,int) =
      (int(*)(int,int)) dlsym(handle,"sumar");
   if (!s) {
      printf("\n%s",dlerror());
      return 0;
   }
 
   dlclose(handle);
 
   return 0;
}

y lo compilo con lo siguiente:

g++ -ldl -lstdc++ -o suma suma.cc 

este programa al ser ejecutado me devuelve el siguiente error:

	./lib.so.1: undefined symbol: sumar


Anteriormente ya habia usado librerias algo mas complejas y funcionaban, pero
orita nomas no jala... osea si abre adecuadamente el lib.so.1 (cuando no existe
esta me manda error de que no la puede abrir, pero el programa falla hasta el
dlsym y no en el dlopen) pero no encuentra la mentada funciona ni a golpes...

Alguien podra orientar a esta alma sin rumbo? =)

Thx men!!

-- 

						 Miguel Cárdenas
						--------------------
						mcmail_y2k en yahoo com


---------------------------------------------------------
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]