dladdr не возвращает полный путь в dli_fname

Я использую dladdr, чтобы получить полный путь к библиотеке:

Dl_info dl_info;
int ret = dladdr((void*)&func, &dl_info);
if (ret)
            // use dl_info.dli_fname;

Работает нормально. Однако, если я переименую папку со сборкой (и затем запустлю снова), dli_fname не будет содержать полный путь, только имя файла библиотеки. Это почему?

Есть и другие шаги, кроме переименования папки сборки (разное. Cmake изменения, в основном связанные с функциональностью установки), но тем не менее проблема возникает только после переименования (т.е. приложение запускается не из папки сборки).

0 ответов

dl_info.dli_fname не всегда содержит полный путь в Android ( см. здесь)

Это обходной путь в этом случае: см. Мой ответ

Другие вопросы по тегам