2010-11-27 19 views
6

Estoy escribiendo una aplicación en C que usaba una variable global (una estructura de archivo de registro). En mi aplicación, estoy cargando bibliotecas compartidas dinámicamente en tiempo de ejecución y quiero usar una variable global que apunta a la misma estructura de archivo de registro para iniciar sesión en la biblioteca compartida.Uso de una variable global en una biblioteca compartida

Esto no parece ser posible en el enfoque sencillo:

  • declarar la variable global como extern no funcionará porque dlopen() EFS que la variable global es un símbolo indefinido
  • la definición de la la variable global funcionará nuevamente pero la variable "nueva" no será la misma que la "original" en el ejecutable

Cualquier sugerencia de cómo solucionar esto sería genial.

¡Gracias!

Respuesta

8

necesita compilar su aplicación principal con -rdynamic bandera (por ejemplo:. gcc -g -rdynamic -o main main.c, y para declarar la variable global en su biblioteca dinámica con extern

+0

Gracias peoro, tenía que pasar el indicador -rdynamic al enlazador . Ahora funciona bien. – herzrasen

Cuestiones relacionadas