|
|
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Использую Qt 4.1.4 + MSVS2005 - приложение с динамическим подключением CRT (mvscp80.dll, msvcr80.dll). Нужно СРОЧНО перекинуть прилложение на компьютер где этих библиотек, скорее всего, нет. Насколько знаю, приложения, использующие msvcp80.dll/msvcr80.dll не рабоают, даже если dll находится в той же папке, но не прописана каким-то образом (мне не известным) через *.manifest'ы. Как я понимаю, *.manifest'ы относятся к .NET FrameWork, а я его не использую. Как компилить программу с динамическим линком, так чтобы работала на других машинах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 00:42:44 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Чуть-чуть поковырял справку, и выяснил, что для этого нужно делать "проект-инсталлятор", и что это околесица с манифестами есть последствия новой системы подгрузки dll. А человеческий вариант решения есть? Прога в архиве *.rar весит 1.8 метра, в инсталляторе с vcredist_86.exe - пять с половиной метров и, ясен пень, не сжимается. Это что, для каждой мелочи инсталлятор писать/делать? Как это все можно по-нормальному решить? (Есть, конечно, вариант - сменить операционную систему :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 02:56:20 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErVЧуть-чуть поковырял справку, и выяснил, что для этого нужно делать "проект-инсталлятор", и что это околесица с манифестами есть последствия новой системы подгрузки dll. А человеческий вариант решения есть? Прога в архиве *.rar весит 1.8 метра, в инсталляторе с vcredist_86.exe - пять с половиной метров и, ясен пень, не сжимается. Это что, для каждой мелочи инсталлятор писать/делать? Как это все можно по-нормальному решить? (Есть, конечно, вариант - сменить операционную систему :)) в новой системе мона и по старому... строите обычный солюшен...обычные проекты...обычный C++...ссылки на дэлеле не нуна делать...нужно только прилинковать либы описывающие вентиля вызовов из этих дэлеле... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 13:38:49 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
kolobok0 ErVЧуть-чуть поковырял справку, и выяснил, что для этого нужно делать "проект-инсталлятор", и что это околесица с манифестами есть последствия новой системы подгрузки dll. А человеческий вариант решения есть? Прога в архиве *.rar весит 1.8 метра, в инсталляторе с vcredist_86.exe - пять с половиной метров и, ясен пень, не сжимается. Это что, для каждой мелочи инсталлятор писать/делать? Как это все можно по-нормальному решить? (Есть, конечно, вариант - сменить операционную систему :)) в новой системе мона и по старому... строите обычный солюшен...обычные проекты...обычный C++...ссылки на дэлеле не нуна делать...нужно только прилинковать либы описывающие вентиля вызовов из этих дэлеле... (круглый) Можно по-подробнее? ГДе взять/как получить "либы описывающие вентиля вызовов из этих дэлеле"? Есть, конечно, вариант ещё статического линка, но, блин, в комбинации с Qt - там поддержка плагинов отключается(прощай, png, jpeg и т.д.) и экзэшники получаются здоровые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 13:45:34 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV...Можно по-подробнее? ГДе взять/как получить "либы описывающие вентиля вызовов из этих дэлеле"?... млин... 1) есть статические библиотеки... Выглядят как obj(тники) сваленные в общие файлы - библиотеки (либы). При объявлении переменных, классов, функций юзаете ашник ..Линковщику указываете соответствующие либы... Из данных либов тянуться либо все(зависит от линковщика), либо только указанные объектники... 2) есть динамические библиотеки...Различают два способа загрузки.. а) явный... б) не явный... а) явный... в коде явно пишете - лоад лайбрэри...гэт бла-бла-бла и по этому гэт делаете вызов (я это обозвал вентелем - возможно не корректно)... б) не явно..(о чём шла речь в предыдущем топике)... как и при статике - юзаете ашник для объявления этих переменных, классов, функций...Линковщику так же указываете ЛИБ файлы в которых скрыта подгрузка указанной дэлеле (а не обжик файлы как в статике!!!), связывание по адресам, инициализация контекста выполнения и прочей мишуры... Эти либы поставляются производителем дэлеле (вроде как потащить их автоматом низзя - хотя тут могу ошибаться...) с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 14:04:27 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
kolobok0 ErV...Можно по-подробнее? ГДе взять/как получить "либы описывающие вентиля вызовов из этих дэлеле"?... е корректно)... б) не явно..(о чём шла речь в предыдущем топике)... как и при статике - юзаете ашник для объявления этих переменных, классов, функций...Линковщику так же указываете ЛИБ файлы в которых скрыта подгрузка указанной дэлеле (а не обжик файлы как в статике!!!), связывание по адресам, инициализация контекста выполнения и прочей мишуры... Эти либы поставляются производителем дэлеле (вроде как потащить их автоматом низзя - хотя тут могу ошибаться...) с уважением (круглый) Идею, кажется, понял, но, извините, разве не этот метод используется по умолчанию для динамического линка/crt в dll? - линкуется msvcrt.lib, а он подгружает msvcr80.dll. Если не этот метод, как тогда эти *.lib ы называются? Они должны входить в состав visualStudio (раз производитель майкрософт), но это явно не libcmt.lib и не msvcrt.lib. Кроме того, на msdn было сказано, что новые dll'ки детектируют "неправильные" сценарии загрузки, и выдают сообщения об ошибке инициализации. (сам вчера убедился). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 14:27:13 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Да сотри ты нафиг этот манифест, и будет счастье !! Должно быть, по крайней мере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 14:30:58 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV....разве не этот метод используется по умолчанию для динамического линка/crt в dll? - линкуется msvcrt.lib, а он подгружает msvcr80.dll. Если не этот метод, как тогда эти *.lib ы называются? Они должны входить в состав visualStudio (раз производитель майкрософт), но это явно не libcmt.lib и не msvcrt.lib.Кроме того, на msdn было сказано, что новые dll'ки детектируют "неправильные" сценарии загрузки, и выдают сообщения об ошибке инициализации. (сам вчера убедился). кхм... тут вот я и задумался..гы... давайте вот что...как Вы подключаете CRT. типа стэп бай стэп... работаю с 2005 - на ругань не натыкался...самому стало интересно... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 14:33:34 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
MasterZivДа сотри ты нафиг этот манифест, и будет счастье !! Должно быть, по крайней мере. во-во...и у меня первая мысля такая была...посему выше и написал - стандартным макаром прилинковать и усе дела...кхм.. (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 14:34:45 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
kolobok0 кхм... тут вот я и задумался..гы... давайте вот что...как Вы подключаете CRT. типа стэп бай стэп... работаю с 2005 - на ругань не натыкался...самому стало интересно... (круглый) Solution Explorer -> Project Properties-> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded DLL (/MD) Прога на заказ. По умолчанию предполагается наихудший (и наиболее реальный) вариант, что на машине заказчика этих dll'лек нет. Соответственно, первая мысль приходит в голову - скинуть их в папку с прогой. (для чистоты эксперимента блокирую все пути, где эта dll'ка живет) НЕ РАБОТАЕТ. Пишет либо "не удается выполнить программу", либо что-то в этом духе. Копируем туда манифест от всего этого из папки "MSVS2005\VC\redist\x86\Microsoft.VC80.CRT". Не работает. Выдает "ошибка инициализации приложения". Убить манифест нельзя - работать не будет вообще никак, только со статическим линком. Лезем в инет. Выясняем, что майкрософт рекомендует использовать Setup Project для этого, либо запускать vcredist_x86.exe на целевой машине (он создаст папки C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd и проинсталлирует манифест, иначе никак). Делаю сетап. Получается 5,6 метра! Денег на трубе не хватит, чтобы прогу отправить в таком виде, а ночью салон связи не работает. Более того, судя по всему этот самый vcredist_x86.exe не той версии, отличен от того, который у меня. Значит, может не заработать, либо заглючить. Далее, читаем msdn, выясняем, что это все есть новая технология распространения dll, и то ли dll, то ли приложение БУДЕТ ОПРЕДЕЛЯТЬ "НЕПРАВИЛЬНЫЙ" СЦЕНАРИЙ, и отказываться работать, сообщая о "неправильной настройке" или "ошибке инициализации"! Ну и что делать, уважаемые? Этот вариант для меня, мягко говоря, неудобен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 19:16:07 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
И еще - с отключенным манифестом, программа ругается, если в папке нет msvcr80.dll и msvcp80.dll, если же они там есть, выдает следующее: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 19:45:50 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
писали бы на vs2003 и не было бы проблем.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 21:46:20 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Ggg_oldписали бы на vs2003 и не было бы проблем.... в vs2005 среда разработки лучше. в 2003 - компилятор. :) Самый быстрый был в vc6.5. Ещё бы это все собрать все вместе в одну кучу, так было бы вообще хорошо. Проблему решил инсталлятором (кстати, на машине клиента этих библиотек, само собой, не было), но это не вариант. Нужны другие решения. Кто-нибудь их знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2006, 00:51:10 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
2ErV: Я 2005-й не смотрел, поэтому в пару словах опишите, что вам нравится в IDE2005-го по отношению к чистому С++ и чего не было в 2003. Из некоторых обзоров, я понял, что все "красоты" 2005 касаются именно .Net-приложений (дизайнеры форм, визарды и пр). Зато есть куча проблем с портированием различных решений под 2005 (я отслеживаю стоны по поводу портирования CORBA С++ на 2005-й), ну и геморой, который вы описали. При работе с QT все дизайнеры идут вместе с QT и интегрируются в IDE. Добавить еще Visual Assist и работать с кодом становится гораздо приятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2006, 11:28:22 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Ggg_old2ErV: Я 2005-й не смотрел, поэтому в пару словах опишите, что вам нравится в IDE2005-го по отношению к чистому С++ и чего не было в 2003. Из некоторых обзоров, я понял, что все "красоты" 2005 касаются именно .Net-приложений (дизайнеры форм, визарды и пр). Зато есть куча проблем с портированием различных решений под 2005 (я отслеживаю стоны по поводу портирования CORBA С++ на 2005-й), ну и геморой, который вы описали. При работе с QT все дизайнеры идут вместе с QT и интегрируются в IDE. Добавить еще Visual Assist и работать с кодом становится гораздо приятнее. Видите ли, мне 2005 нравится именно из-за IDE. Я при работе использую шрифт нефиксированной ширины (т.е. - не monospace, так ещё Строуструп советовал), и делаю все панели AutoHide - мне так удобней - мышью я почти не пользуюсь, а они все одним клавиатурным аккордом вызываются. (см рисунок, извиняюсь за зверское качество). 2003 меня постоянно доставал одним мелким глюком - через несколько build'ов панель Warnings уползала каким-то образом вниз среды так, что не был виден даже заголовок, и её надо было выковыривать оттуда мышью. Второй глюк - это вечные проблемы с IntelliSense (работал только в 15% случаев), который мне необходим. В 2005 эти проблемы решили, но, к сожалению (извиняюсь), изгадили язык, CRT-библиотеку(путем добавления различных функций типа strmp_s), убрали SingleThreaded библиотеку. Касательно Corba ничего не могу сказать, так как базами данных не занимаюсь ВООБЩЕ. Также там сделали одну гадость, которая проявилась при компиляции Qt. CustomBuild tool теперь и должен называться CustomBuildTool. Если при генерации vcproj файлов он будет назван "moc"(как и было), то при загрузке он будет полностью проигнорирован. Мне, чтобы это исправить, пришлось лезть в исходники qmake и исправлять... В общем, IDE в 2005, как, мне кажется, фактически уже финальная версия, и очень удобен, можно сказать, что почти идеален. Мне, по крайней мере, так кажется. По-моему, эта первая версия в MSVC, которая по удобству подобралась к тому уровню, на котором была Borland Delphi 5. :) ОДнако, те изменения, которые были произведены в компиляторе, CRT, механизме загрузки библиотек, огорчают и настораживают. Как я понимаю, strcmp_s, к примеру - уже далеко не стандарт, и человек, который его использует, не сможет потом быстро перенести свой код на другой компилятор. То же самое касается "легких решений" при помощи .Net, Windows Forms и MFC... Но это ИМХО... Так что касательно проблемы с CRT, уважаемые? Можно как-нибудь его по-нормальному подключить? Или мне кастом билд CRT делать с отключенным механизмом (если возможно)? Или на опенсорс переходить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2006, 13:46:02 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Ggg_old2ErV: При работе с QT все дизайнеры идут вместе с QT и интегрируются в IDE. Добавить еще Visual Assist и работать с кодом становится гораздо приятнее. Кстати, можно по-подробнее по этому поводу? У меня Qt 4.1.4 OpenSourceEdition, и никакой интеграции там вроде как и нет... Я единственное - назначил открытие файлов *.ui QtDesigner'ом и все... Но это же не интеграция? Если вам не трудно - пару слов по поводу VisualAssist - давно про него слышу, но ни разу не видел. Что за вещь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2006, 13:49:39 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
У меня все панели настроены как аутохайд. Окно с ворнингами никогда не уползало. Да, intellisence в 2003 работает крайне погано. Visual Assist встраивается в студию как родной, заменяет собой intellisence и заметно расширяет его. Работает - как мечтается и лучше чем ожидаешь. После него ни про что другое вспоминать не хочется. Это как-бы мастхэв на сегодняшний день. Лучше качните триал, попробуйте, оцените. Лекарство от триала легко находится в инете. К QT идет т.н. интегратор. Он есть отдельно под кокретные версии VS IDE, и есть универсальный - под все версии. Вы мне на мыло в профайле напишите, одну хорошую ссылочку пришлю. Что я не смог забороть - не запоминает VS2003 состояние фолдинга (свернут/развернут). При открытии файла все развернуто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2006, 17:20:46 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV....Ну и что делать, уважаемые? Этот вариант для меня, мягко говоря, неудобен... что делать - уже ответил Вам выше...могу сказать ЧЁТКО следующее... MSVC2005 работаю как обычно на сях, си плас плас, и си шарпе... проблем о которых Вы говорите - НЕ встречал... файлик включающий в ся MFC весит "всего" 600 kb... возникает вопрос... пустая ли у вас закладка по следующему путю... Solution Explorer -> Project Properties-> Common Properties -> References поле Name должно быть ПУСТЫМ !!! и проект должен быть обычным, без всяких менэджэт си плас плас... (круглый) ЗЫ сдаёться мне, что идёт попытка заюзать дот нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 14:03:15 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
kolobok0 возникает вопрос... пустая ли у вас закладка по следующему путю... Solution Explorer -> Project Properties-> Common Properties -> References поле Name должно быть ПУСТЫМ !!! и проект должен быть обычным, без всяких менэджэт си плас плас... Пустая. kolobok0[quot ErV]работаю как обычно на сях, си плас плас, и си шарпе... проблем о которых Вы говорите - НЕ встречал... файлик включающий в ся MFC весит "всего" 600 kb... Вопрос не в MFC (не использую). Требуется создать приложение с динамически подключаемым CRT в DLL. Если манифест embedded, то при попытке запуска приложения на машине без DLL пишет, "DLL не найдена". Если в папке есть, пишет, если не ошибаюсь, что "приложение направильно настроено". Ему нужен каталог в C:\Windows\WinSxS. Если манифест отключить, при наличии DLL пишет сообщение о неверной инициализации (вышеукзанное R3034 "An application has made an attempt to load C runtime library incorrectly). Вариант со статичным линком неприемлим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 14:24:56 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV...Требуется создать приложение с динамически подключаемым CRT в DLL. Если манифест embedded, то при попытке запуска приложения на машине без DLL пишет, "DLL не найдена".... давайте по порядку... берём студию.. запускаем визард проектов... выбираем...чаво ? (ну и далее стэп-бай стэп, до пустой формочки)..чтоб компильнуть и получить проблемы..лады ? может что умное и придёт в голову... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 14:43:51 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
kolobok0 ErV...Требуется создать приложение с динамически подключаемым CRT в DLL. Если манифест embedded, то при попытке запуска приложения на машине без DLL пишет, "DLL не найдена".... давайте по порядку... берём студию.. запускаем визард проектов... выбираем...чаво ? (ну и далее стэп-бай стэп, до пустой формочки)..чтоб компильнуть и получить проблемы..лады ? может что умное и придёт в голову... с уважением (круглый) Ok. В MSVS2005: File->New->Project Win32->Win32 Project имя "trash" :), "Create Directory for solution" checked. жмем OK. В визарде: Application Settings->Windows Application, отмечаем "empty project". жмем "Finish" Alt+Ctrl+L (вызов Solution Explorer) на проекте жмем Shift+Ctrl+A (Add new item) выбираем VisualC++->C++ file. обзываем его "main" жмем "Add" печатаем: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Alt+F7(project properties) Configuration Properties->Linker->Manifest File::Generate Manifes - "No" Жмем "ОК". F7. (Build) Ctrl+F5 (Run); получаем "приложению не удалось запуститься поскольку MSVCR80D.dll не был найден. Повторная установка приложения может исправить эту проблему". MSVCR80 D так как билд дебажный. лезем в "$(MSVSDIR)\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT", копируем оттуда msvcr80d.dll в папку \debug проекта. Возвращаемся в среду, жмем Ctrl+F5. Получаем: "Debug Error! Program: d:\c++\project\trash\debug\trash.exe R6034 An application has made an attempt to load C runtime library without using a manifest. This is an unsopperted way to load Visual C++ DLL. you need to modify your application to build with manifest. For more information, see "Visual C++ Libraries as Shared Side-by-Side Assemblies" topic in product documentation." :( P.S. Какой - нибудь workaround есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 22:10:31 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Ну, и дальше если "пропустить" - "ошибка при инициализации приложения (0xc0000142). Для выхода из приложения нажмите кнопку "ОК". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 22:12:52 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
И далее (ищу способы запуска/переноса на другую машину без создания инсталлятора): Включаем манифест (Generate Manifest:: yes) Компилируем. выключаем студию, для создания ситуации "машина клиента", убиваем процесс mspdbsrv, лезем в папку WinSxS, переименовывем папку x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c и манифест x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c.manifest в что-то другое (иначе они будут находится программой). Запускаем (msvcr80d.dll в каталоге с программой). Выдает :"приложение не может быть запущено, поскольку оно некорректно настроено". Докидываем в папку манифест и оставшиеся две библиотеки CRT (msvcm80d.dll, msvcp80d.dll). Запускаем. Выдает то же самое ("некорректно настроено"). Смотрим найденный в гугле воркэраунд - скинуть папку с именем Microsoft.VC80.DebugCRT в каталог с программой. Запускаем. То же самое ("некорректно настроено"). переносим копию манифеста Microsoft.VC80.DebugCRT.manifest из подкаталога с CRT в каталог программы. Запускаем. Выдает ту же самую ошибку (некорректно настроено). При отсутствии DLL'ек в папке выдает то же самое сообщение ("некорректно настроено"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 23:34:21 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Вот все варианты, которые я пробовал. Работает только создание инсталлятора, но неприемлимо, так как программа должна быть легко переносима с одной машины на другую. Статический линк неприемлим, так как необходимо оставить использование *.DLL в Qt(плагины), а со статическим линком будет большой суммарный размер всех файлов за счет дублирования кода CRT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 23:39:10 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
И два мелких уточнения: ErVДокидываем в папку манифест и оставшиеся две библиотеки CRT (msvcm80d.dll, msvcp80d.dll). Под "манифестом" имеется в виду "Microsoft.VC80.DebugCRT.manifest" из папки "VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCrt". Библиотеки оттуда же. ErV Смотрим найденный в гугле воркэраунд - скинуть папку с именем Microsoft.VC80.DebugCRT в каталог с программой. Имеется в виду та же папка ("VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCrt") со всем содержимым (манифест и три дллки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2006, 23:44:02 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV....Alt+F7(project properties) Configuration Properties->Linker->Manifest File::Generate Manifes - "No" Жмем "ОК". F7. (Build) Ctrl+F5 (Run); получаем "приложению не удалось запуститься поскольку MSVCR80D.dll не был найден. ... не подтверждаю... запускается...работает..."No" в том месте где указали - поставил... дошёл до этого места - думаю дальше не имеет смысла... коментировать не буду...может что нить и рожу... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2006, 15:31:01 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
kolobok0 ErV....Alt+F7(project properties) Configuration Properties->Linker->Manifest File::Generate Manifes - "No" Жмем "ОК". F7. (Build) Ctrl+F5 (Run); получаем "приложению не удалось запуститься поскольку MSVCR80D.dll не был найден. ... не подтверждаю... запускается...работает..."No" в том месте где указали - поставил... дошёл до этого места - думаю дальше не имеет смысла... коментировать не буду...может что нить и рожу... (круглый) В msdn было сказано, что ряд систем этот наворот с манифестами не поддерживают, и работают частично по-старинке. MSDN On versions of Windows that do not support deployment of shared side-by-side assemblies, such as Windows 98 and Windows 2000 Server, the Visual C++ libraries are installed in the System32 folder and WinSxS folder under the operating system root directory. This setup enables running Visual C++ applications on these operating system versions because they do not support manifest-based binding of applications to dependent DLLs. On these operating systems, when an application is loaded, the corresponding manifest file is ignored and the operating systems searches for dependent DLLs using paths set in the current running environment. However, on upgrading the operating system to a version that support manifest-based binding, such as Windows XP or Windows Server 2003, applications built with manifests start using the DLLs installed in the WinSxS folder. Часом не одна из вышеперчисленных у вас стоит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2006, 18:35:50 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV....Часом не одна из вышеперчисленных у вас стоит? вроде не сервак... Wicrosoft Windows 2000 SP4 (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2006, 19:26:59 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
kolobok0 ErV....Часом не одна из вышеперчисленных у вас стоит? вроде не сервак... Wicrosoft Windows 2000 SP4 (круглый) У меня Windows XP Professional SP2 При попытке засунуть msvcrt80d.dll C:\Windows\System32 проложение вылетает с тем жу глюком - R6034 (Приложение попыталось загрузить CRT, не используя манифест). Я где-то натыкался на эту инфу: internet According to Microsoft, installing a private side-by-side assembly is not supported on Windows 2000 and below, but it seems to work okay. They prefer the CRT DLLs to be installed in the System32 directories. In my opinion, it sounds more like scare tactics from Microsoft. They say it may or may not work, but they're not going to help you if you do it. Если у вас есть в каталоге $(WinDir)\System32\ эти *.dll'ки, значит (как я понимаю), метод загрузки через манифесты системой не поддерживается, и поэтому все работает. Как я понимаю, остается только вариант Custom CRT Build? А с лицензией (Microsoft EULA) не будет проблем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2006, 22:27:36 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Проблема (вроде бы) решена копированием содержимого папки \VC\redist\x86\Microsoft.VC80.CRT в каталог с программой. Надо понимать, что при прошлых попытках теста, переименовывания каталога C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c и манифеста было недостаточно, и что-то оказывало влияние на тест. Когда полностью перекинул содержимое папки WinSxS в другое место, все пшло без проблем, надо понимать, аналогично будет и на машине заказчика. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 15:42:55 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Пробовал исправить- выдает "ошибка инициализации приложения". может кто-нибудь помочь? http://otvet.mail.ru/question/838748/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 11:27:50 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Тема годичной давности но всё же: Проблема решается так: Project Property->Configuration properties->c/c++->code generation->runtime library->MTd манифест отключить. ЕХЕ потолстеет на 400 кb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 22:18:47 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, долго-долго читал msdn на эту тему а потом решил-таки погуглить, и вот работают оба метода - с копированием содержимого папки этой и с отключением манифеста, скажите плиз какой из них использовать более грамотно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 15:17:31 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
eldarkt wrote: > с копированием содержимого папки этой и с отключением манифеста, > скажите плиз какой из них использовать более грамотно? ИМХО, либо ставить vcredist_x86, либо статический линк. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 03:38:47 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV Ggg_oldписали бы на vs2003 и не было бы проблем.... в vs2005 среда разработки лучше. в 2003 - компилятор. :) Самый быстрый был в vc6.5. Ещё бы это все собрать все вместе в одну кучу, так было бы вообще хорошо. Проблему решил инсталлятором (кстати, на машине клиента этих библиотек, само собой, не было), но это не вариант. Нужны другие решения. Кто-нибудь их знает? http://www.sql.ru/forum/actualthread.aspx?tid=483464 - тут у тебя это был вариант:) 2MasterZiv - походу ты никогда не ставил на чистые машины проекты. Манифесты ищутся в том же каталоге. В exe-шнике, если его открыть в тотале например Ф3, можно в самом конце увидеть описания зависимостей в ресурсах. Там и прописано имя манифеста который надо найти, а вот уже в манияесте прописано какую dll и откуда грузить. У меня только не получилось грузить одну и туже dll из разных библиотек, расположенных в подпапках. Где в манифесте это прописано. Может кто знает где именно? Сначала манифест ищется в папке WinSxS а потом уже в папке с установленной прогой. Вариант таскать не vcredist.exe, а включить Microsoft_VC80_CRT_x86_x64.msm и policy_8_0_Microsoft_VC80_CRT_x86_x64.msm, к себе в инсталятор. Он сам все сделает. Похоже это и есть самый умный вариант. Кто умнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 13:46:22 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Не получивший ответа wrote: > Вариант таскать не vcredist.exe А что мешает vcredist включить в инсталлятор? Насколько я помню, M$'овский визард (хотя я это ооочень давно делал) именно это и делает. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 14:20:12 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Не получивший ответа wrote: > Кто умнее? Не занимайтесь ерундой. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 14:20:31 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
ErV Не получивший ответа wrote: > Кто умнее? Не занимайтесь ерундой. Ну я имел в виду "Кто умнее" предложит идею и не хотел никого оскорблять. В msi его включить не получиться по одной простой причине, что он сам msi, а два одновременных msi работать одноременно не могут. Либо свой инсталятор писать не на msi. И вообще это тупо. Есть только два варианта и они уже предложены. Зачем еще посторять тоже самое: 1. Таскать с собой необходимые dll и манифест. Чтобы я и сделал на месте автора, если у него только один exe или все исполнимое лежит в одном каталоге. Просто манифест тоже носи и все. Легко и удобно. 2. Включить модуль для распространение от самого МС. Его ты найдешь в Common Files\Merge Modules если не ошибаюсь. Можешь поиском воспользоваться, я уже давал имена файлов. ВСЕ!!! Другого не дано свыше (Мелкософтом) Хотя вариант статической линковки тут приводили. Тоже хорошо. Даже лучше всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 14:40:49 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
Понявший что не получит ответа wrote: > оскорблять. В msi его включить не получиться по одной простой причине, > что он сам msi, а два одновременных msi работать одноременно не могут. > Либо свой инсталятор писать не на msi. Объясняю. В Visual Studio можно делать инсталляторы для приложения. Я это только один раз ковырял, оно мне показалось жутко сырым, но можно было создать сетап, который инсталлировал нужные библиотеки, вызывая vcredist. Оно работало, причем dll'ки шли не в MSM. Пошаговое описалово по созданию проекта есть где=то в msdn. Кроме того, по-моему, мне попадались уже приложения, инсталлировавшие vcredist прямо из сетапа. > Таскать с собой необходимые dll и манифест. Когда я этот вопрос рыл, то натыкался на сообщения людей, у которых этот вариант не работал. По неизвестным причинам, без объяснений. Посему и рекомендую vcredist или собирать проект инсталлера. > Чтобы я и сделал на месте автора, Какого автора? Автор первого сообщения - Я, проблема решена давным-давно и забыта. (на дату первого сообщения посмотрите, больше года прошло) > 2. Включить > модуль для распространение от самого МС. ПисАл же выше, в MSVC можно собрать инсталлятор, который установит нужные библиотеки (плюс найдет все компоненты, которые может понадобиться устанавливать). > Хотя вариант статической линковки тут приводили. Тоже хорошо. Даже > лучше всех. Приложение, которое это использовало, опиралось на Qt 4, а ему для корректной работы плагинов нужен динамический линк. > Другого не дано свыше (Мелкософтом) Компиляция через mingw. (если возможно). Или даунгрейд до vc7.1 или компилятора, который вместе с ним фриварно распространялся (vc 2003 compiler toolkit, что ли? Сейчас фиг найдешь, M$ его с сайта удалила...). Ещё есть вариант пересборки CRT с целью выкусывания бреднятины с манифестом, но я не в курсе, разрешено ли это M$-овской лицензией. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 15:02:31 |
|
||
|
msvcp80.dll динамический линк и проблемы
|
|||
|---|---|---|---|
|
#18+
проект с нуля win32 api windows application /empty project добавляю 2 файла: хэдер и cpp. В хэдере: Код: plaintext в cpp Код: plaintext 1. 2. 3. 4. 5. меняю линковку на статическую, т.е. libcmtd.lib (_MTd) в дебаге / (_MT) libcmt.lib - в релизе. Компилю. Запускаю в BoundsChecker'e дебаг - все ОК. Запускаю релиз - приложение запускается и см. картинку. может мне кто-нибудь объяснить, что я делаю не так? -------------------------------------------------------------- [не претендую на уникальность] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2007, 08:57:29 |
|
||
|
|

start [/forum/search_topic.php?author=CheshirCat&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
275ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 468ms |
| total: | 898ms |

| 0 / 0 |
