Russian Qt Forum

Qt => Общие вопросы => Тема начата: unkeep от Январь 08, 2015, 11:00



Название: определение зависимостей библиотеки во время загрузки
Отправлено: unkeep от Январь 08, 2015, 11:00
Может кто-нибудь знает как runtime определить зависимости библиотеки?
То есть загружается плагин, который зависит от каких-то библиотек, мне надо узнать о этих зависимостях. Может в QApplication есть какая-то нотификация о факте подключения библиотеки?


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Igors от Январь 08, 2015, 11:10
На OSX (и, полагаю, на др nix платформах) - легко, c помощью otool -L (два дня назад этим занимался). А вот на Вындоуз хз. Ну DependencyWalker - но не знаю как его юзать "из приложения"


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Fregloin от Январь 08, 2015, 15:23
ldd в линукс, в винде как подсказали dependencyWalker


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: unkeep от Январь 08, 2015, 15:36
блин мне надо программно это установить на этапе загрузки плагина PluginLoader-ом. Как ручками посмотреть я-то знаю


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: alex312 от Январь 08, 2015, 16:01
a в чем проблема ? Не знаете как запустить внешнюю утилиту и получить ее вывод ?


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Fregloin от Январь 08, 2015, 17:46
Боюсь кроссплатформенного функционала такого в Qt не реализовано еще.


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Igors от Январь 09, 2015, 08:14
блин мне надо программно это установить на этапе загрузки плагина PluginLoader-ом. Как ручками посмотреть я-то знаю
Запускаете утилиту с помощью QProcess, ловите ее вывод и разбираете.


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Fregloin от Январь 14, 2015, 15:00
кстати в отладке можно увидеть все загруженные либы, т.е. креатор как то это делает, смотрите исходники


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: __Heaven__ от Январь 14, 2015, 15:15
кстати в отладке можно увидеть все загруженные либы, т.е. креатор как то это делает, смотрите исходники
Мне кажется, что это не креатор делает, а дебагер


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Bepec от Январь 14, 2015, 15:57
А если вы захотите, при помощи WinApi вы можете сделать то же самое :D В смысле увидеть все загруженные либы.
Но это платформозависимый код :)


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Гурман от Январь 14, 2015, 22:47
И что должно получиться, если библиотеки, от которых зависит загружаемая, сами зависят от каких-то, а те от каких-то еще, и т.д.? Это же дерево зависимостей, а не таблица. Причем практически всегда весьма развесистое.

На скриншоте в дереве 1_copy_CI_std15lnc.dll - это моя библиотека, которая именно плагин. Раскрыты только несколько веток из нескольких десятков...


Название: Re: определение зависимостей библиотеки во время загрузки
Отправлено: Igors от Январь 15, 2015, 08:32
И что должно получиться, если библиотеки, от которых зависит загружаемая, сами зависят от каких-то, а те от каких-то еще, и т.д.? Это же дерево зависимостей, а не таблица. Причем практически всегда весьма развесистое.
Могут быть более скромные цели. Напр проверить зависимость от QtCore, если это дебажная версия (или наоборот, или др Qt версия) - то грузить зависящий плагин нельзя, это приведет к краху.