如何從庫本身中獲取共享庫的路徑?動態加載時的庫路徑?
換句話說,假設該庫X使用dlopen()
裝,我怎麼能訪問到被用於從庫本身內加載稱庫的路徑?
請注意,我不能讓加載庫的代理在第一個地方給我這個參數。
更新:這裏是這樣,與靜態變量的工作原理:
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;
}
是否有一個選項來設置一些環境變量與該路徑? 是否有可能編寫一些tmp文件(我知道...... shtty解決方案:() – bua 2009-11-05 15:05:24
@bua:如果push來推,我可能需要在文件系統上「蹦牀」......但我試圖找到一個更清潔的方式 – jldupont 2009-11-05 15:10:28
我的失望,在Android上dli_fname不包含模塊路徑,只有文件名 – 2012-02-29 15:29:33