Здравствуйте, гость ( Вход | Регистрация )
Гость | Дата 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 (сори за помоечную ссылку) Книга толстая Такие секции нужны что белать всякие межпроцесные взаимодействия типа ActiveQt надо 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'ки? может пофилосовствуем на эту тему? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 24.4.2024, 19:29 |