не удалось запустить приложение из-за неправильной параллельной конфигурации

Привет, я создал exe на c ++ с помощью visualstudio. Я создал компонент com, который обнаруживает все экземпляры sqlserver на конкретной машине. Теперь в программе на 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 для подробной диагностики.

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


person Cute    schedule 12.06.2009    source источник


Ответы (3)


Вам необходимо установить VC8 Runtime на W2k8. Это связано с конфигурацией Windows Side by Side. При сборке и EXE создается специальный файл, называемый «манифест», этот файл манифеста описывает версию библиотеки времени выполнения C, которая необходима вашему приложению для правильной работы.
Затем манифест встраивается в исполняемый файл. / 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.

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

person mfawzymkh    schedule 12.06.2009
comment
Пожалуйста, дайте мне знать, поможет ли это в вашей проблеме. - person mfawzymkh; 12.06.2009
comment
Создайте приложение как статически связанное Как это сделать, пожалуйста, скажите мне - person Cute; 12.06.2009
comment
когда вы создаете его в VS, перейдите в проекты- ›настройки-› C / C ++ - ›Генерация кода и выберите параметры Runtime Lib как / MTd вместо / MDd. - person mfawzymkh; 12.06.2009
comment
Обратите внимание, это увеличит размер вашей DLL / EXE. Сообщите мне, сработало ли это для вас. Спасибо - person mfawzymkh; 12.06.2009
comment
Привет, работал нормально .. А у меня новый выпуск. Вместо того, чтобы отображать результат, он показывает ошибочную ошибку Ошибка отладки: программа: c: \ SqlDicovery.exe Эта программа запросила среду выполнения, чтобы завершить ее необычным способом, обратитесь в службу поддержки приложений для получения дополнительной информации Как решить эту проблему - person Cute; 12.06.2009
comment
пожалуйста, наблюдайте --- ›stackoverflow.com/questions/981447/ - person Cute; 12.06.2009
comment
Вам потребуется выполнить отладку, чтобы определить стек вызовов в точке сбоя. вы можете сделать это, прикрепив windbg, когда вы видите диалоговое окно assert, или запустив приложение под windbg. вы можете скачать windbg (Инструменты отладки для Windows). Его должно быть легко запустить. Убедитесь, что вы создаете приложение в режиме отладки, а также скопируйте файл .PDB, чтобы получить полные символы. - person mfawzymkh; 12.06.2009
comment
Ой, извините, я пропустил некоторую информацию. Exe, который я разработал, используя машину win2k3 32, и я пытался запустить на машине w2k8 64 бит, это резон для ошибки отладки theat ????? (32-битная машина exe, которую я пытался запустить на 64-битной машине) - person Cute; 13.06.2009
comment
мм, это не должно быть проблемой, однако вы упомянули, что задействован com-объект, поэтому вы можете убедиться, что вы запускаете свое приложение под WOW, и не забудьте зарегистрировать свой COM-объект из командного окна WOW, пусть я знаю, работает ли это спасибо - person mfawzymkh; 13.06.2009
comment
Извини, что не объяснил. WOW означает (Windows On Window), это технология, которая позволяет запускать 32-битное приложение изначально в 64-битной среде. Вы можете открыть окно WOW из% windir% \ Syswow64 \ cmd.exe Спасибо - person mfawzymkh; 15.06.2009

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

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

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

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

person Michael Dunn    schedule 12.06.2009

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

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

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

  1. Не связывайте свое приложение статически, чтобы избежать установки повторных списков.
person John Dibling    schedule 12.06.2009