Russian Qt Forum

Qt => Общие вопросы => Тема начата: DarkHobbit от Октябрь 13, 2022, 11:03



Название: Подробная диагностика для QLibrary::load()
Отправлено: DarkHobbit от Октябрь 13, 2022, 11:03
Добрый день.
Как все знают, QLibrary::load() может не сработать, и в errorString() при этом можно увидеть сообщение "Не найден указанный модуль".
Проблема в том, что в роли "указанного модуля" может выступать не сама загружаемая библиотека, а одна из библиотек, от которых она зависит.
Можно ли как-то расковырять информацию о том, какая именно библиотека второго уровня не найдена?

Я даже готов для этого наковырять платформозависимые костыли для Linux и Windows. Если это поможет, конечно.
Куда копать?


Название: Re: Подробная диагностика для QLibrary::load()
Отправлено: kambala от Октябрь 13, 2022, 11:18
в Макос (линуксе вроде тоже) список зависимостей можно увидеть через otool -L, в винде наверное есть что-то аналогичное


Название: Re: Подробная диагностика для QLibrary::load()
Отправлено: DarkHobbit от Октябрь 28, 2022, 14:01
Ну это "внешний" способ. Хотелось бы надёжную диагностику в Runtime, чтобы при запуске было понятно, кто виноват - программист, тот, кто дистрибутив формировал или вообще кто-то третий. А то, грубо говоря, программа тащит Qt, Qt тащит libpq, libpq тащит libiconv и ещё бог весть что из библиотек, вплоть до Microsoft Redistributable... а исход один, "driver not loaded".

Как там в анекдоте про Папу Римского - несправедливо!

P.S. Приведённый пример с драйверами - всего лишь пример, есть и другие похожие ситуации.