Здравствуйте, гость ( Вход | Регистрация )
Гость | Дата 10.5.2009, 23:46 |
актуальные длл покажет дллексплорер Русиновича http://Sysinternals.com правда он командная строка, нужно в файл переправить | |
Litkevich Yuriy | Дата 10.5.2009, 21:11 |
надо dependency walker поглядеть, может там мешанина из версий грузится, обычно на диске полно копий погляжу как энтузиазм появится.поидее если я запускаю Асистент через кнопку "Пуск", и рядом с асистеном лежат dll'ки, то виндовоз ищет их начиная с текущего каталога приложения. И, коль ему путь не безразличен, должен подгружать ту, что рядом лежит. Я-то думал виндовоз только имя самой dll'ки смотрит. Тогда получается мешанины быть недолжно. Т.е. в память должны грузится, например, QtCore4.dll и QtCore4.dll, только с разных путей. |
|
Гость | Дата 10.5.2009, 20:49 |
Т.е. путь к dll'ке Виндовоз учитывает? допустим записали в 2 директории ехе файл в одну с длл в другую без, при запущенном первом второй как не запускался, так и не будет запускаться. Вроде так в первом приближении задачи независимы. Каждая ДЛЛ при загрузке проходит через ДллМаин правда есть секции с атрибутом SHARED Джеффри РИХТЕР. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows (сори за помоечную ссылку) Книга толстая ![]() надо dependency walker поглядеть, может там мешанина из версий грузится, обычно на диске полно копий |
|
Litkevich Yuriy | Дата 10.5.2009, 16:06 |
загружена именно та, с учетом пути Т.е. путь к dll'ке Виндовоз учитывает? |
|
SABROG | Дата 10.5.2009, 15:15 |
dependency walker вроде как показывает пути к дллкам. | |
Гость | Дата 10.5.2009, 14:31 |
нет, просто в проводнике, или через кнопку "Пуск" запускаю бинарь. Дело в том, что dll'ка с нужным именем уже загружена в память. сначала нужно найти ее на диске, потом проверить что загружена именно та, с учетом пути |
|
Litkevich Yuriy | Дата 10.5.2009, 13:33 |
А Assistant 4.5.x тоже запускается в окружении Qt 4.4.3 ? нет, просто в проводнике, или через кнопку "Пуск" запускаю бинарь. Дело в том, что dll'ка с нужным именем уже загружена в память. |
|
SABROG | Дата 10.5.2009, 13:09 |
Дак вот положим запустил я свою программу в окружении Qt 4.4.3, а потом решил запустить Qt Assistant (4.5.x) и в момент индексации он валится. А Assistant 4.5.x тоже запускается в окружении Qt 4.4.3 ? |
|
Litkevich Yuriy | Дата 10.5.2009, 11:24 |
Несколько раз напарывался на аварийные завершения программ написаных на 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'ки? может пофилосовствуем на эту тему? |
|
Просмотр темы полностью (откроется в новом окне) | |
![]() |
|
Текстовая версия | Сейчас: 10.7.2025, 9:13 |