Dll'ки Qt, толи трёп, толи философия |
Здравствуйте, гость ( Вход | Регистрация )
Dll'ки Qt, толи трёп, толи философия |
Litkevich Yuriy |
10.5.2009, 11:24
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Несколько раз напарывался на аварийные завершения программ написаных на Qt в том числе Qt Assistant.
И нашёл этому объяснение. Дело в том, что у меня стоит несколько версий Qt. Запуск приложений осуществляется с помощью bat-файлов, задающих окружение. Дак вот положим запустил я свою программу в окружении Qt 4.4.3, а потом решил запустить Qt Assistant (4.5.x) и в момент индексации он валится. Долго немог понять почему. Если закрываю свою программу, то Асистент работает нормально. Мой вывод следующий: Qt***4.dll уже сидит в памяти от 4.4.х, и когда пускается Асистент 4.5.х, то виндовоз ему говорит, что нужная dll'ка уже загружена и находится тут. А там dll'ка предыдущей версии. вот я и думаю, а как вообще будут уживаться вместе разные проги в дистрибутиве которых есть Qt dll'ки? может пофилосовствуем на эту тему? |
|
|
SABROG |
10.5.2009, 13:09
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
Litkevich Yuriy |
10.5.2009, 13:33
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Гость_Гость_* |
10.5.2009, 14:31
Сообщение
#4
|
Гости |
|
|
|
SABROG |
10.5.2009, 15:15
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
dependency walker вроде как показывает пути к дллкам.
|
|
|
Litkevich Yuriy |
10.5.2009, 16:06
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Гость_Гость_* |
10.5.2009, 20:49
Сообщение
#7
|
Гости |
Т.е. путь к dll'ке Виндовоз учитывает? допустим записали в 2 директории ехе файл в одну с длл в другую без, при запущенном первом второй как не запускался, так и не будет запускаться. Вроде так в первом приближении задачи независимы. Каждая ДЛЛ при загрузке проходит через ДллМаин правда есть секции с атрибутом SHARED Джеффри РИХТЕР. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows (сори за помоечную ссылку) Книга толстая Такие секции нужны что белать всякие межпроцесные взаимодействия типа ActiveQt надо dependency walker поглядеть, может там мешанина из версий грузится, обычно на диске полно копий |
|
|
Litkevich Yuriy |
10.5.2009, 21:11
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
надо dependency walker поглядеть, может там мешанина из версий грузится, обычно на диске полно копий погляжу как энтузиазм появится.поидее если я запускаю Асистент через кнопку "Пуск", и рядом с асистеном лежат dll'ки, то виндовоз ищет их начиная с текущего каталога приложения. И, коль ему путь не безразличен, должен подгружать ту, что рядом лежит. Я-то думал виндовоз только имя самой dll'ки смотрит. Тогда получается мешанины быть недолжно. Т.е. в память должны грузится, например, QtCore4.dll и QtCore4.dll, только с разных путей. |
|
|
Гость_Гость_* |
10.5.2009, 23:46
Сообщение
#9
|
Гости |
актуальные длл покажет дллексплорер Русиновича http://Sysinternals.com правда он командная строка, нужно в файл переправить
|
|
|
Текстовая версия | Сейчас: 26.4.2024, 1:35 |