![]() |
|
![]() ![]() ![]() |
|
DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
При запуске программы выводится сообщение с ошибкой can’t find *.dll надо удалять папку Debug или найти файлы *.manifest и удалить затем откомпилировать проект заново.
как избавится от этой ошибки раз и на всегда ?, какие свойства проекта надо поменять ? |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
ты бы код ошибки без вольного перевода привел... так же неплохо бы чуть больше написать о способе/месте запуска...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
Exe’шник создается нормально , без ошибок !
Но при попытке запуска винда выдает ошибку что типа MFC*.dll не найден , Эта ошибка вылезает редко но сильно бесит потому что надо лезть в папку и удалять *.manifest файлы , на VS2003 такого нет !, только на VS2005. да и еще почему если поменять с Multi-Byte на Unicode то файл манифеста не подключается и интерфейс из-за этого становится не красивым ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
а теперь еще раз попробуй пирвести полный код ошибки без вольного толкования... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Rapalex |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Вообщето наоборот, а причина в:
-------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
||||
|
|||||
DigitSphinx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
Rapalex
Тьфу да на оборот !!! _hunter редкая ошибка но вам повезло , она вылезла опять ))
я на всякий случай прикрепил .jpg файлик чтобы можно было еще и посмотреть на ошибку )) а Debug выдает это
Это сообщение отредактировал(а) DigitSphinx - 8.5.2007, 22:36 Присоединённый файл ( Кол-во скачиваний: 18 ) ![]() |
||||
|
|||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Это известные грабли, связанные с загрузкой через манифест.
Ну и варианты : 1)Статическая линковка
2)Динамическая линковка Это сообщение отредактировал(а) dizzy1984 - 9.5.2007, 18:34 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
это говорит о том, что путь к MSVCR80D.dll не включен в PATH твоей системы. решение: включить его. при чем тут манифесты?.. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
dizzy1984 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Думаю, вам стоит почитать например, это Если вкраце. Манифесты содержат информацию для загрузки динамических библиотек (*.dll). Их смысл - разрешение пробем с версиями dll. Появились в vs2005. Сейчас все *.dll находятся в %WinDir%\WinSxS\<arch_name>_<lib_name>_<key> и следовательно при отсутствии такой папки, (что может быть на компьютере с неустановленной vs2005 runtime) dll-ка не находится. Это сообщение и выдается. Что нужно делать я написал. Вот еще увидел. Файлы *.manifest нужны только для старых приложений, которым необходимо использовать новые библиотеки. Манифесты логичнее включать в *.exe файл.
Функция LoadLibrary ищет динамические библиотеки в следующей последовательности
Маловерояно, что DigitSphinx не догадался положить эту dll-ку в c:\windows или c:\windows\system. Очевидно - проблема не в этом. Это сообщение отредактировал(а) dizzy1984 - 10.5.2007, 12:57 |
||||
|
|||||
_hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
верю. но если загрузчик не может найти либу ( а ищет он ее в PATH'aх) то проблема именно в PATH а не в манифестах... Добавлено через 1 минуту и 48 секунд
судя по тому, что они до сих пор не ответил на вопрос о запуске -- в этом... -------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Тогда может вы объясните почему у меня появляется похожее сообщение, когда я пытаюсь запустить программу с дин. линковкой mfc(vs2005) на чистой windows xp?
Все используемые ей dll я копирую в папку с exe, в папку windows и папку system. Дело в том что манифест накладывает ограничение на расположение библиотек. Загрузка через манифест не станет грузить dll, которые лежат в месте, отличном от winsxs. |
|||
|
||||
Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
А можно ссылку на источник? -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Redistributing visual c++ files
Potential run-time errors Первая строка Еще по теме манифестов Visual C++ Libraries as Shared Syde By Side Assemblies Assembly searching sequence
Значит теперь у нас новый загрузчик или новый способ взаимодействия с загрузчиком. Это сообщение отредактировал(а) dizzy1984 - 11.5.2007, 06:34 |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 7 Всего: 92 |
Лоадер экзешников в XP и >, если есть либа в манифесте, он грузит её по технологии манифестов. PATH не при чём. Проверяется:
1. %WinDir%\WinSxS\manifests\<архитектура>_<имя_либы>_<hash-ключ>.manifest. И в той же папочки *.cat файл (сертификат безопасности). Хеш-ключ берётся по данным этого сертификата (конкретный алгоритм не знаю). Если сей манифест находится, то длл-ки берутся из папочки %WinDir%\WinSxS\<имя_манифеста_(см._выше)> Если там ничего не находится, то далее идут прайват-сборки: 2. <app_dir>\<library_name>.manifest => длл-ки берутся из папки с экзехой. Если и здесь неудача, то: 3. <app_dir>\<library_name>\<library_name>.manifest => из <app_dir>\<library_name> Вообще сие уже обсуждалось. Например здесь. Насчёт визуальных стилей. Официально commctl32.dll версий 6 (ну и выше - когда будут) анси-версии своих функций не поддерживает. Точнее не обязана поддерживать. Как пишет МС - в текущих виндах commctl32.dll (шестой версии, т. е. та, что в WinSxS, в system32 - 5-ой) анси-версии поддерживает. Но сие гарантировать МС не собирается. То есть любой win-fix, любой апдейт теоретически может заменить вашу commctl32.dll на чисто юникодную версию. Отсюда соответствующие директивы в недрах CRT. Впрочем это я тоже уже пару раз где-то писал. На вскидку где - не помню ![]() Это сообщение отредактировал(а) Любитель - 22.9.2007, 23:47 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |