Как программно найти местоположение файла динамической библиотеки? - PullRequest
2 голосов
/ 04 ноября 2010

Я хочу найти путь в системе (если есть) конкретной библиотеки, сейчас у меня есть встроенный путь:

dllNameFrodo = "/usr/local/frodo/lib/libfrodo.dylib";

, но, конечно, уродливо и не переносимо.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 04 ноября 2010

Вместо того, чтобы пытаться загрузить жестко запрограммированный путь, либо упакуйте библиотеку локально с вашим приложением, чтобы вы знали, где она установлена, либо, что еще лучше, просто позвольте загрузчику времени выполнения найти и загрузить его автоматически. Таким образом, пользователь может поиграться с LD_LIBRARY_PATH и LD_PRELOAD, чтобы выбрать, какую версию загрузить.

1 голос
/ 04 ноября 2010

Это похоже на поиск любого типа файла - учитывая его имя или расширение и некоторые подсказки, с чего начать поиск, поэтому, если вы хотите искать в портативном режиме, у вас есть 2 решения:

  1. использовать boost :: filesystem
  2. построить некоторые функции поиска и реализовать один раз для каждой платформы, используя функции для конкретной платформы.Подсказка: вот что такое boost :: filesystem - с сахаром сверху - но если вы не хотите или не можете использовать boost, тогда это единственная «портативная» альтернатива.
0 голосов
/ 04 ноября 2010

В Windows вы можете использовать FindFirstFile и семейство.

Это довольно специализированное требование - может быть сложно найти переносимую реализацию, и в любом случае она будет использовать API-интерфейсы для конкретной платформы, если она будет оптимальной для всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...