У меня есть dlopen() 'библиотека, и я хочу инвертировать обратно из дескриптора, который он передает мне, в полный путь к общей библиотеке. В Linux и друзьях я знаю, что я могу использовать dlinfo() для получения linkmap и итерации по этим структурам, но я не могу найти аналог на OSX. Самое близкое, что я могу сделать, это либо:
-
Используйте
dyld_image_count()иdyld_get_image_name(), итерации по всем открытым в настоящее время библиотекам и надеемся, что могу догадаться, какой из них соответствует моему дескриптору -
Как-то найти символ, который живет внутри дескриптора, который у меня есть, и передать это
dladdr().
Если у меня есть априорное знание о имени символа внутри библиотеки, которую я только что открыл, я могу dlsym(), а затем использовать dladdr(). Это прекрасно работает. Но в общем случае, когда я понятия не имею, что находится внутри этой общей библиотеки, мне нужно было бы перечислять символы, чтобы сделать это, и я не знаю, как это сделать.
Поэтому любые советы о том, как искать путь к библиотеке из своего дескриптора dlopen, будут очень оценены. Спасибо!