Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Причины проблем запуска программы в VC 2005

Автор: mihas83
Дата сообщения: 28.12.2006 08:26
Проект состоит из 49 dll и одного *.exe.
Сейчас делаем его портинг с VC 6 в VC 2005.
Все скомпилировалось и слинковалось успешно и запускается без проблем.
Но при переносе на другую машину получаем ''красный Х'':

Цитата:
C:\...\*.exe
This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.


Пo ''требованию'' утилиты Dependency Walker добавил в рабочую папку проекта mfc80ud.dll, msvcp80d.dll, msvcr80d.dll. Теперь вопросов у него нет.
Но не помогло.

По совету RSDN перенес и установил файлы:
Program Files\Common Files\Merge Modules\microsoft_vc80_atl_x86.msm
Program Files\Common Files\Merge Modules\microsoft_vc80_mfc_x86.msm

Проблема осталась.


Нашел еще вот это:

Цитата:
Side-by-side Assemblies
Side-by-side assembly sharing is an infrastructure available on Windows XP and later systems used to safely share assemblies among multiple applications and to offset the negative effects of sharing, such as DLL conflicts. Instead of having a single version of an assembly that assumes backward compatibility with all applications, side-by-side assembly sharing enables multiple versions of a COM or Win32 assembly to run simultaneously on the system. For more information, see Isolated Applications and Side-by-side Assemblies.
Side-by-Side Assemblies can be installed as shared assemblies or as private assemblies.
Side-by-side assemblies are not available on systems earlier than Windows XP.


Но у меня собрана и запускается на одном и том же Windows 2003.
Вот еще нашел:

Цитата:
Runtime, MFC & Co теперь линкуются так, чтобы можно было держать несколько их версий на одной машине (side by side).
Чтобы приложения их (runtime & Co) находили, их надо правильно инсталлировать (msi файлом, который лежит в redistributable у студии). А иначе они их не находят...


На проблемной машине устанавливалась раньше предыдущая версия (с VC 6) с помощью стандартного InstallShield.
У кого есть опыт как правильно инсталлировать msi файлом, если причина в этом?
Где грабли?
Автор: WiseAlex
Дата сообщения: 28.12.2006 11:15
mihas83
это известная проблема
в свое время я пройдя тот же путь просто сделал static link т.к. не понял всю это новую чехарду, но это не тот случай (судя по кол-ву модулей)
есть статья на codeproject - не совсем то, но там есть ссылки и общее объяснение
и вот еще ссылка на форум - что-то очень похожее на правду
Автор: zeroandruxa
Дата сообщения: 28.12.2006 12:35
Извените за нескромный вопрос а фраемворк 2.0 коректно стал на машине?
Автор: WiseAlex
Дата сообщения: 28.12.2006 12:56
zeroandruxa
судя по всему это не .net приложение и ему он не нужен
Автор: mihas83
Дата сообщения: 31.12.2006 08:29
Путем научного тыка добился в конце концов работоспособности перенесом с VC 2005 и установкой в самом проекте папок Microsoft.VC80.DebugCRT (Microsoft.VC80.DebugCRT.manifest, msvcm80d.dll, msvcp80d.dll, msvcr80d.dll) и Microsoft.VC80.DebugMFC (с соотв. файлами mfc80d.dll, mfc80ud.dll, mfcm80d.dll, mfcm80ud.dll, Microsoft.VC80.DebugMFC.manifest).
Дебажная версия требует только свое.
Автор: WiseAlex
Дата сообщения: 31.12.2006 18:35
mihas83
спасибо за информацию - MS в своем репертуаре - чем дальше тем запутаннее
С Новым Годом (можно без взаимности )
Автор: mihas83
Дата сообщения: 01.01.2007 12:55
WiseAlex

Цитата:
спасибо за информацию - MS в своем репертуаре - чем дальше тем запутаннее

Это уж точно...
А теперь уже совсем перемудрили...
Автор: WiseAlex
Дата сообщения: 03.01.2007 13:09
для полноты картины решил кинуть ссылку на параллельныую тему с rsdn
здесь
Автор: Lauarvik
Дата сообщения: 22.02.2007 16:26
Ещё настоятельно советую обратить внимание на это: Visual C++ Application: How to use manifests and re-distributable assemblies?

Страницы: 1

Предыдущая тема: SQL запрос


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.