Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена. Манифест в главную dll-ку внедрен.
Здравствуйте, Аноним, Вы писали:
А>Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена.
возможно разные библиотеки собраны с разным crt, убедитесь что всё использует одинаковый runtime
Здравствуйте, MasterZiv, Вы писали:
MZ>On 27.05.2011 16:42, Аноним 241 wrote:
>> Может кто-то сталкивался с такой проблемой?
MZ>Все сталкивались с такой проблемой.
MZ>Ты дал очень мало информации. MZ>Ну и погляди на утилиту depends для начала.
Проблема не в этом, а в том что в запускающем exe-шнике нет манифеста. Все следующие dll-ки, которые грузятся и в которых нет манифеста ищут его в контексте по умолчанию, т.е. exe-файла (а там его нет!). В каждую dll-ку встраивать манифест нельзя, т.к. это подразумевает наличие соответсвующих мелкософтовских библиотек рядом.
Собственно хотелось бы знать, возможно ли встроить манифест в dll-ку, а не в exe, и чтоб все последующие dll-ки видели видели именно этот манифест.
Здравствуйте, Аноним, Вы писали:
А>Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена. Манифест в главную dll-ку внедрен.
А>Может кто-то сталкивался с такой проблемой?
Положите рядом с exe файл манифеста нужной вам библиотеки и не будет проблем.
On 29.05.2011 17:48, WooHoo wrote:
> Проблема не в этом, а в том что в запускающем exe-шнике нет манифеста. Все > следующие dll-ки, которые грузятся и в которых нет манифеста ищут его в > контексте по умолчанию, т.е. exe-файла (а там его нет!). В каждую dll-ку > встраивать манифест нельзя, т.к. это подразумевает наличие соответсвующих > мелкософтовских библиотек рядом.
Это как это нельзя ? НУЖНО! Ну, точнее конечно не обязательно в каждую
.DLL, в каждую сборку, которая является одной или несколькими .dll-ями.
Здравствуйте, MasterZiv, Вы писали:
MZ>On 29.05.2011 17:48, WooHoo wrote:
>> Проблема не в этом, а в том что в запускающем exe-шнике нет манифеста. Все >> следующие dll-ки, которые грузятся и в которых нет манифеста ищут его в >> контексте по умолчанию, т.е. exe-файла (а там его нет!). В каждую dll-ку >> встраивать манифест нельзя, т.к. это подразумевает наличие соответсвующих >> мелкософтовских библиотек рядом.
MZ>Это как это нельзя ? НУЖНО! Ну, точнее конечно не обязательно в каждую MZ>.DLL, в каждую сборку, которая является одной или несколькими .dll-ями.
Нельзя только в моем случае... размер программы критичен, а так как dll-ек много и лежат они в разных каталогах, то встраивать в каждую манифест и подкладывать мелкософтовские библиотеки в моем случае не вариант
Здравствуйте, _nn_, Вы писали:
__>Здравствуйте, Аноним, Вы писали:
А>>Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена. Манифест в главную dll-ку внедрен.
А>>Может кто-то сталкивался с такой проблемой?
__>Положите рядом с exe файл манифеста нужной вам библиотеки и не будет проблем.
__>На примере Debug CRT VC 9.0:
__>Файл: Microsoft.VC90.DebugCRT.manifest: __>
__>Далее кладем в ту же директорию файлы msvcr90d.dll, msvcp90d.dll, msvcm90d.dll.
Это все есть, программа корректно работает. Знаю, т.к. запускала от собранного мною екзешника с внедренным манифестом.
Но если exe левый, и есть возможность только внедрить манифесты в dll... Неужели придется в каждую?
Здравствуйте, WooHoo, Вы писали:
WH>Это все есть, программа корректно работает. Знаю, т.к. запускала от собранного мною екзешника с внедренным манифестом. WH>Но если exe левый, и есть возможность только внедрить манифесты в dll... Неужели придется в каждую?
Ничего внедрять не нужно.
Просто положить файлы Microsoft.VC90.DebugCRT.manifest, msvcr90.dll, и другие рядом с exe.
Здравствуйте, _nn_, Вы писали:
__>Здравствуйте, WooHoo, Вы писали:
WH>>Это все есть, программа корректно работает. Знаю, т.к. запускала от собранного мною екзешника с внедренным манифестом. WH>>Но если exe левый, и есть возможность только внедрить манифесты в dll... Неужели придется в каждую?
__>Ничего внедрять не нужно. __>Просто положить файлы Microsoft.VC90.DebugCRT.manifest, msvcr90.dll, и другие рядом с exe.
зачем рядом с exe подкладывать манифест сборки, если в exe нет зависимости от этой сборки?
А если бы это было решением, то у меня бы все работало, т.к. эта сборка установлена как общая.