¿Cómo puedo obtener la ruta de la biblioteca compartida desde la misma biblioteca?ruta de la biblioteca cuando se carga dinámicamente?
En otras palabras, digamos que la biblioteca X se carga utilizando dlopen()
, ¿cómo puedo obtener acceso a la ruta que se utilizó para cargar dicha biblioteca desde la misma biblioteca?
Tenga en cuenta que no puedo tener el agente que se ha cargado la biblioteca en el primer lugar mano me este parámetro.
ACTUALIZADO: Aquí está la manera que funciona con variables estáticas:
std::string wdir;
namespace {
class dynamic_library_load_unload_handler {
public:
dynamic_library_load_unload_handler(){
Dl_info dl_info;
dladdr((void *) NP_Initialize, &dl_info);
std::string path(dl_info.dli_fname);
wdir = path.substr(0, path.find_last_of('/') +1);
}
~dynamic_library_load_unload_handler(){
// Code to execute when the library is unloaded
}
} dynamic_library_load_unload_handler_hook;
}
¿Hay una opción para establecer alguna variable de entorno con ese camino? ¿Existe la posibilidad de escribir algún archivo tmp (sé ... :(solución shtty) – bua
@bua: si el empuje viene empujar, que probablemente tendrá que "cama elástica" en el sistema de archivos ... pero yo estoy tratando de . encontrar una forma más limpia – jldupont
Para mi decepción, en dli_fname Android no contiene la ruta del módulo, sólo el nombre de archivo –