Russian Qt Forum
Ноябрь 23, 2024, 11:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: определение зависимостей библиотеки во время загрузки  (Прочитано 5808 раз)
unkeep
Гость
« : Январь 08, 2015, 11:00 »

Может кто-нибудь знает как runtime определить зависимости библиотеки?
То есть загружается плагин, который зависит от каких-то библиотек, мне надо узнать о этих зависимостях. Может в QApplication есть какая-то нотификация о факте подключения библиотеки?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Январь 08, 2015, 11:10 »

На OSX (и, полагаю, на др nix платформах) - легко, c помощью otool -L (два дня назад этим занимался). А вот на Вындоуз хз. Ну DependencyWalker - но не знаю как его юзать "из приложения"
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Январь 08, 2015, 15:23 »

ldd в линукс, в винде как подсказали dependencyWalker
Записан
unkeep
Гость
« Ответ #3 : Январь 08, 2015, 15:36 »

блин мне надо программно это установить на этапе загрузки плагина PluginLoader-ом. Как ручками посмотреть я-то знаю
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #4 : Январь 08, 2015, 16:01 »

a в чем проблема ? Не знаете как запустить внешнюю утилиту и получить ее вывод ?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #5 : Январь 08, 2015, 17:46 »

Боюсь кроссплатформенного функционала такого в Qt не реализовано еще.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Январь 09, 2015, 08:14 »

блин мне надо программно это установить на этапе загрузки плагина PluginLoader-ом. Как ручками посмотреть я-то знаю
Запускаете утилиту с помощью QProcess, ловите ее вывод и разбираете.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #7 : Январь 14, 2015, 15:00 »

кстати в отладке можно увидеть все загруженные либы, т.е. креатор как то это делает, смотрите исходники
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #8 : Январь 14, 2015, 15:15 »

кстати в отладке можно увидеть все загруженные либы, т.е. креатор как то это делает, смотрите исходники
Мне кажется, что это не креатор делает, а дебагер
Записан
Bepec
Гость
« Ответ #9 : Январь 14, 2015, 15:57 »

А если вы захотите, при помощи WinApi вы можете сделать то же самое Веселый В смысле увидеть все загруженные либы.
Но это платформозависимый код Улыбающийся
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #10 : Январь 14, 2015, 22:47 »

И что должно получиться, если библиотеки, от которых зависит загружаемая, сами зависят от каких-то, а те от каких-то еще, и т.д.? Это же дерево зависимостей, а не таблица. Причем практически всегда весьма развесистое.

На скриншоте в дереве 1_copy_CI_std15lnc.dll - это моя библиотека, которая именно плагин. Раскрыты только несколько веток из нескольких десятков...
« Последнее редактирование: Январь 14, 2015, 22:49 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Январь 15, 2015, 08:32 »

И что должно получиться, если библиотеки, от которых зависит загружаемая, сами зависят от каких-то, а те от каких-то еще, и т.д.? Это же дерево зависимостей, а не таблица. Причем практически всегда весьма развесистое.
Могут быть более скромные цели. Напр проверить зависимость от QtCore, если это дебажная версия (или наоборот, или др Qt версия) - то грузить зависящий плагин нельзя, это приведет к краху.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 22.