Что такое «параллельная конфигурация» EXE-файла командной строки Windows и как мне это исправить? - PullRequest
2 голосов
/ 31 августа 2010

У меня есть простой .exe, написанный на C ++ (построенный с Visual Studio 2005), который тестирует некоторое оборудование с помощью прилагаемого API.Он отлично работает на компьютере с Windows 7, на котором я его построил, но когда я копирую его на другой (Windows 7) компьютер и запускаю его (из командной строки), я получаю:

Приложение имеетне удалось запустить, поскольку его параллельная конфигурация неверна.Пожалуйста, смотрите журнал событий приложения или используйте инструмент командной строки sxstrace.exe для получения более подробной информации.

Что такое «параллельная конфигурация»?

Я запустил sxstrace.exe и прочитайте информацию об использовании.Похоже, мне нужно будет использовать свой exe для создания файла журнала для sxstrace.exe, чтобы быть полезным?

Я полагаю, проблема в том, что мой exe требует DLL, которые либо не существуют на другом компьютере, либонеправильная версия.Как мне узнать, какие библиотеки использует мой exe-файл и на какие версии он ссылается на моем компьютере (где он работает)?Любые другие советы по копированию на другую машину и запуску?Поможет ли больше информации?

Ответы [ 4 ]

3 голосов
/ 31 августа 2010

mfawzymkh * ответ на приложение " не удалось запустить из-за неправильной настройки конфигурации " (ссылка на вопрос Спирулентность , связанная с его ответом на этот вопрос), по-видимому, применима и к этому вопросу. mfawzymkh пишет:

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

И комментарий mfawzymkh к тому же ответу объясняет, как строить как статически связанные:

когда вы создаете его в VS, перейдите к работы-> настройки-> C / C ++ -> Code Поколение и выберите Runtime Lib опции / MTd вместо / MDd

Я сделал это, и параллельное сообщение о конфигурации исчезло. (И после установки чего-то еще для DLL, которую я использовал, мой EXE работает.)

2 голосов
/ 30 сентября 2013

"когда вы собираете его в VS, перейдите в проекты-> настройки-> C / C ++ -> Генерация кода и выберите параметры Runtime Lib, чтобы быть / MTd вместо / MDd" работал для меня, хотя меня интересовалВерсия выпуска вместо версии отладки.

Microsoft говорит: / MT Заставляет ваше приложение использовать многопоточную статическую версию библиотеки времени выполнения.Определяет _MT и заставляет компилятор поместить имя библиотеки LIBCMT.lib в файл .obj, чтобы компоновщик использовал LIBCMT.lib для разрешения внешних символов.

/ MD Заставляет ваше приложение использовать многопоточность иСпецифичная для DLL версия библиотеки времени выполнения.Определяет _MT и _DLL и заставляет компилятор поместить имя библиотеки MSVCRT.lib в файл .obj.Приложения, скомпилированные с этой опцией, статически связаны с MSVCRT.lib.Эта библиотека предоставляет слой кода, который позволяет компоновщику разрешать внешние ссылки.Фактический рабочий код содержится в MSVCR100.DLL, который должен быть доступен во время выполнения приложениям, связанным с MSVCRT.lib.

2 голосов
/ 29 декабря 2011

Для чего это стоит, я столкнулся с той же проблемой. В окне просмотра событий у меня появилось сообщение об ошибке:

Сбой генерации контекста активации для "C: \\ MyExe.exe". Ошибка в манифесте или файле политики "C: \\ MyExe.exe.Config" в строке 12. Неверный синтаксис XML.

Конечно, я изменил строку подключения и пропустил заключительную кавычку. Добавил это обратно, и это решило проблему.

1 голос
/ 31 августа 2010

Вы страдаете от той же проблемы, что и этот парень? Параллельные сборки, Windows 7 и Visual Studio 2005

...