Jak mogę uzyskać ścieżkę udostępnionej biblioteki z samej biblioteki?ścieżka biblioteki po załadowaniu dynamicznym?
Innymi słowy, załóżmy, że biblioteka X została załadowana przy użyciu dlopen()
, w jaki sposób uzyskać dostęp do ścieżki, która została użyta do załadowania biblioteki z samej biblioteki?
Należy zauważyć, że nie mogę pozwolić, aby agent, który załadował bibliotekę, najpierw przekazał mi ten parametr.
AKTUALIZACJA: Oto sposób, który współpracuje z zmiennych statycznych:
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;
}
Czy istnieje opcja ustawienia zmiennej środowiskowej o tej ścieżce? Czy istnieje możliwość napisania pliku tmp (ja wiem ... rozwiązanie shtty :() – bua
@bua: jeśli push przyjdzie do popchnięcia, prawdopodobnie będę potrzebował "trampoliny" w systemie plików ... ale staram się znajdź czystszy sposób: – jldupont
Ku mojemu rozczarowaniu, na Androidzie dli_fname nie zawiera ścieżki do modułu, tylko nazwa pliku –