приложение не удалось запустить, потому что неправильная конфигурация - PullRequest
3 голосов
/ 12 июня 2009

HI Я создал exe на C ++, используя visualstudio. Я создал com-компонент, который обнаруживает все экземпляры sqlserver на конкретном machine.now в программе на c ++ с использованием visualstudio, пишу main () и использую com-компонент.

Теперь это должно работать на обеих моих рабочих станциях, которые являются машинами w2k3. И когда я пытаюсь запустить то же самое на w2k8 машине, я получаю ошибку как

приложению не удалось запуститься, поскольку параллельная конфигурация неверна и подробности см. В журнале ошибок событий приложения

Я открываю журнал ошибок приложения и обнаружил ошибку как

Сбой генерации контекста активации для "E: \ SQLDiscovery.exe". Зависимая сборка Microsoft.VC80.DebugCRT, processorArchitecture = "x86", publicKeyToken = "1fc8b3b9a1e18e3b", type = "win32", version = "8.0.50608.0" не найдена. Пожалуйста, используйте sxstrace.exe для подробной диагностики.

Как решить эту проблему, помогите мне

Ответы [ 3 ]

6 голосов
/ 12 июня 2009

Вы должны установить VC8 Runtime на W2k8. Это связано с конфигурацией Windows Side by Side. При сборке и EXE создается специальный файл с именем «manifest», этот файл манифеста описывает версию библиотеки времени выполнения C, которая необходима вашему приложению для корректной работы.
Затем манифест встраивается в ваш exe / dll (если вы действительно открыли .dll / exe с помощью блокнота и прокрутили до конца, вы увидите его в формате xml), вы также можете использовать mt.exe (инструмент манифеста) для просмотра манифест внутри любого исполняемого файла.

Когда вы перемещаете свое приложение в W2k8, вы должны убедиться, что установлен зависимый CRT (если только вы статически не связываете свое приложение с CRT).

Вы можете решить эту проблему одним из следующих способов. 1- Установите VC8 Debug CRT 2- Создайте приложение как статически связанное

Проверьте также этот блог http://detritus.blogs.com/lycangeek/2006/08/diagnosis_of_wi.html Он содержит полезную информацию о том, как отладить проблемы winsxs.

Надеюсь, это поможет

1 голос
/ 12 июня 2009
  1. Не отправляйте отладочные сборки. Создайте его в версии, а затем поместите на целевой компьютер.
  2. Если вы используете CRT (вы это делаете), вам нужно установить распространяемые CRT-файлы. Вам необходимо установить (на целевой машине) те, которые соответствуют версии и SP компилятора, который вы использовали для сборки приложения. Это очень простая и стандартная практика

Вот ссылка, по которой вы можете получить повторные списки для VC8: ссылка А вот ссылка для редистов для VC8 SP1: текст ссылки

Просто Google "vc8 Redist" или любую версию, которую вы используете, и вы найдете свой путь.

  1. Не статически связывайте свое приложение, просто чтобы избежать необходимости устанавливать редистанты.
1 голос
/ 12 июня 2009

Проблема в том, что для EXE требуются отладочные библиотеки CRT, а они отсутствуют на компьютере 2008 года. Как это исправить, зависит от того, что вы хотите / должны сделать.

Если вы хотите использовать отладочную CRT, либо статически связывайте ее с CRT (устраняя необходимость иметь библиотеки DLL на компьютере 2008 года), либо создайте каталог с именем «Microsoft.VC80.DebugCRT» в том же каталоге, что и EXE. и поместите туда необходимые библиотеки DLL и файл манифеста CRT .

CRT отладки не распространяется, AFAIK нет способа «установить CRT отладки», кроме установки всей Visual Studio.

Если вам на самом деле не нужна отладочная ЭЛТ, свяжитесь с версией релиза. Опять же, вам нужно будет выбрать между статической LIB и версией DLL. Хорошей новостью является то, что релиз CRT можно распространять, проверьте каталог установки Visual Studio на vcredist_x86.exe.

...