проблема с манифестами в dll
От: Аноним  
Дата: 27.05.11 12:42
Оценка:
Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена. Манифест в главную dll-ку внедрен.

Может кто-то сталкивался с такой проблемой?


31.05.11 09:07: Перенесено из 'C/C++'
Re: проблема с манифестами в dll
От: Sni4ok  
Дата: 27.05.11 13:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена.


возможно разные библиотеки собраны с разным crt, убедитесь что всё использует одинаковый runtime
Re[2]: проблема с манифестами в dll
От: MasterZiv СССР  
Дата: 28.05.11 17:12
Оценка:
On 27.05.2011 17:12, Sni4ok wrote:

> возможно разные библиотеки собраны с разным crt, убедитесь что всё использует

> одинаковый runtime

Как бы не обязаны. Для того и манифесты, для того и SideBySide этот дурацкий.
Posted via RSDN NNTP Server 2.1 beta
Re: проблема с манифестами в dll
От: MasterZiv СССР  
Дата: 28.05.11 17:13
Оценка:
On 27.05.2011 16:42, Аноним 241 wrote:

> Может кто-то сталкивался с такой проблемой?


Все сталкивались с такой проблемой.

Ты дал очень мало информации.
Ну и погляди на утилиту depends для начала.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: проблема с манифестами в dll
От: WooHoo  
Дата: 29.05.11 13:48
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 27.05.2011 16:42, Аноним 241 wrote:


>> Может кто-то сталкивался с такой проблемой?


MZ>Все сталкивались с такой проблемой.


MZ>Ты дал очень мало информации.

MZ>Ну и погляди на утилиту depends для начала.


Проблема не в этом, а в том что в запускающем exe-шнике нет манифеста. Все следующие dll-ки, которые грузятся и в которых нет манифеста ищут его в контексте по умолчанию, т.е. exe-файла (а там его нет!). В каждую dll-ку встраивать манифест нельзя, т.к. это подразумевает наличие соответсвующих мелкософтовских библиотек рядом.

Собственно хотелось бы знать, возможно ли встроить манифест в dll-ку, а не в exe, и чтоб все последующие dll-ки видели видели именно этот манифест.
Re: проблема с манифестами в dll
От: _nn_  
Дата: 29.05.11 14:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена. Манифест в главную dll-ку внедрен.


А>Может кто-то сталкивался с такой проблемой?


Положите рядом с exe файл манифеста нужной вам библиотеки и не будет проблем.

На примере Debug CRT VC 9.0:

Файл: Microsoft.VC90.DebugCRT.manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <noInheritable/>
  <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
  </assemblyIdentity>
   <file name="msvcr90d.dll"/>
   <file name="msvcp90d.dll"/>
   <file name="msvcm90d.dll"/>
</assembly>


Далее кладем в ту же директорию файлы msvcr90d.dll, msvcp90d.dll, msvcm90d.dll.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: проблема с манифестами в dll
От: MasterZiv СССР  
Дата: 30.05.11 06:09
Оценка:
On 29.05.2011 17:48, WooHoo wrote:

> Проблема не в этом, а в том что в запускающем exe-шнике нет манифеста. Все

> следующие dll-ки, которые грузятся и в которых нет манифеста ищут его в
> контексте по умолчанию, т.е. exe-файла (а там его нет!). В каждую dll-ку
> встраивать манифест нельзя, т.к. это подразумевает наличие соответсвующих
> мелкософтовских библиотек рядом.

Это как это нельзя ? НУЖНО! Ну, точнее конечно не обязательно в каждую
.DLL, в каждую сборку, которая является одной или несколькими .dll-ями.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: проблема с манифестами в dll
От: WooHoo  
Дата: 30.05.11 06:27
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 29.05.2011 17:48, WooHoo wrote:


>> Проблема не в этом, а в том что в запускающем exe-шнике нет манифеста. Все

>> следующие dll-ки, которые грузятся и в которых нет манифеста ищут его в
>> контексте по умолчанию, т.е. exe-файла (а там его нет!). В каждую dll-ку
>> встраивать манифест нельзя, т.к. это подразумевает наличие соответсвующих
>> мелкософтовских библиотек рядом.

MZ>Это как это нельзя ? НУЖНО! Ну, точнее конечно не обязательно в каждую

MZ>.DLL, в каждую сборку, которая является одной или несколькими .dll-ями.


Нельзя только в моем случае... размер программы критичен, а так как dll-ек много и лежат они в разных каталогах, то встраивать в каждую манифест и подкладывать мелкософтовские библиотеки в моем случае не вариант
Re[2]: проблема с манифестами в dll
От: WooHoo  
Дата: 30.05.11 06:30
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, Аноним, Вы писали:


А>>Есть ситуация: некоторое стороннее приложение ( которое я изменить не могу ) подгружает мою главную dll-ку, которая в свою очередь тянет еще несколько моих dll-ек из подпапок. Проблема возникает при загрузке dll-ек из подпапок, пишет, что библиотека времени выполнения некорректно загружена. Манифест в главную dll-ку внедрен.


А>>Может кто-то сталкивался с такой проблемой?


__>Положите рядом с exe файл манифеста нужной вам библиотеки и не будет проблем.


__>На примере Debug CRT VC 9.0:


__>Файл: Microsoft.VC90.DebugCRT.manifest:

__>
__><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
__><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
__>  <noInheritable/>
__>  <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
__>  </assemblyIdentity>
__>   <file name="msvcr90d.dll"/>
__>   <file name="msvcp90d.dll"/>
__>   <file name="msvcm90d.dll"/>
__></assembly>
__>


__>Далее кладем в ту же директорию файлы msvcr90d.dll, msvcp90d.dll, msvcm90d.dll.



Это все есть, программа корректно работает. Знаю, т.к. запускала от собранного мною екзешника с внедренным манифестом.
Но если exe левый, и есть возможность только внедрить манифесты в dll... Неужели придется в каждую?
Re[3]: проблема с манифестами в dll
От: _nn_  
Дата: 30.05.11 07:36
Оценка:
Здравствуйте, WooHoo, Вы писали:

WH>Это все есть, программа корректно работает. Знаю, т.к. запускала от собранного мною екзешника с внедренным манифестом.

WH>Но если exe левый, и есть возможность только внедрить манифесты в dll... Неужели придется в каждую?

Ничего внедрять не нужно.
Просто положить файлы Microsoft.VC90.DebugCRT.manifest, msvcr90.dll, и другие рядом с exe.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: проблема с манифестами в dll
От: WooHoo  
Дата: 30.05.11 07:51
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Здравствуйте, WooHoo, Вы писали:


WH>>Это все есть, программа корректно работает. Знаю, т.к. запускала от собранного мною екзешника с внедренным манифестом.

WH>>Но если exe левый, и есть возможность только внедрить манифесты в dll... Неужели придется в каждую?

__>Ничего внедрять не нужно.

__>Просто положить файлы Microsoft.VC90.DebugCRT.manifest, msvcr90.dll, и другие рядом с exe.

зачем рядом с exe подкладывать манифест сборки, если в exe нет зависимости от этой сборки?
А если бы это было решением, то у меня бы все работало, т.к. эта сборка установлена как общая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.