Не удалось запустить приложение ... Неправильная конфигурация приложения - VC ++ 2005 Runtime Проблема - PullRequest
7 голосов
/ 05 ноября 2008

Мы переместили наше решение Visual C ++ 2003 в Visual 2005, и теперь у нас возникли проблемы с развертыванием для очистки компьютеров с XP.

Наше решение имеет проект DLL и исполняемый файл командной строки, который использует эту DLL. Оба проекта создают и встраивают файлы манифеста.

Наш установщик также копирует среды выполнения VC8 CRT из C: \ Program \ Microsoft Visual Studio 8 \ VC \ redist \ x86 \ Microsoft.VC80.CRT \ в каталог установки.

Когда мы устанавливаем на чистую Windows XP, мы видим сообщение об ошибке «Не удалось запустить приложение ... Неправильная конфигурация приложения».

Помещение exe в Depends.exe, говорит:

Error: The Side-by-Side configuration information for "c:\program files\MySoftware\vc8\BENCHMARK.EXE" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).
Error: The Side-by-Side configuration information for "c:\program files\MySoftware\vc8\MYLIB-VC8.DLL" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Журналы просмотра событий:

Dependent Assembly Microsoft.VC80.CRT could not be found and Last Error was The referenced assembly is not installed on your system.

Resolve Partial Assembly failed for Microsoft.VC80.CRT. Reference error message: The referenced assembly is not installed on your system.

Generate Activation Context failed for C:\Program Files\MySoftware\vc8\Benchmark.exe. Reference error message: The operation completed successfully.

Я прочитал, достаточно скопировать в папку приложения файлы msvcp80.dll, msvcr80.dll, msvcm80.dll и Microsoft.VC80.CRT.manifest.

Что я делаю не так?

Ответы [ 4 ]

5 голосов
/ 05 ноября 2008

Копирование CRT-библиотек вокруг не рекомендуется. Как говорит Винай, вы должны использовать правильные модули слияния.

Вы также можете использовать Redist Install exe, если модули слияния не работают с вашей установочной технологией:

В качестве крайней меры попробуйте скопировать весь каталог Microsoft.VC80.CRT в каталог exe ваших программ (не содержимое, а действительный каталог).

4 голосов
/ 01 декабря 2008

Вам не нужна библиотека времени выполнения Microsoft VC80 C. Это беспорядок.

Вместо этого перекомпоновайте вашу программу с параметром / MT, который статически связывает библиотеку времени выполнения c (libcmt.lib) или C ++ Standard Library. Чтобы установить это через свойства проекта, перейдите на

C/C++ -> Code Generation -> Runtime Library: Multi-threaded (/MT)

Если он не компилируется, вы также можете добавить эту опцию (/ NODEFAULTLIB:)

Linker -> Input -> Ignore Specific Library: msvcrt.lib

См. Параметры ссылки от http://msdn.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx

2 голосов
/ 05 ноября 2008

У меня тоже была эта проблема. Я был потрясен в Microsoft за то, что сделал это с нами.
(Я использовал VC6 для сборки определенного проекта, а затем, когда я также установил 2003 и 2005 на сборочную машину, это вызвало проблемы с моей сборкой VC6. (Я не проверял установки на нетронутой машине) то, что он делал, вызывало проблемы с моим дистрибутивом. Затем мне пришлось добавить ОГРОМНЫЙ файл повторной установки в мое приложение exe 120k. Freakin 'microsoft.

MS в прошлом несколько раз облажалась.

http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en

2 голосов
/ 05 ноября 2008

Выберите модули Visual Studio 2005 Merge в программе установки. Это также может произойти, если вы создали exe / dll с помощью Visual Studio, в которой установлен пакет обновления.

...