Visual Studio «Ошибка запуска приложения из-за неправильной конфигурации приложения» - PullRequest
3 голосов
/ 07 марта 2011

Я получил некоторый код от друга, разработанный на той же системе (Windows 7) и той же Visual Studio Ultimate 2010 , со всеми сопоставленными библиотеками.

Код строится,но при попытке его запустить я получаю сообщение об ошибке:

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

Запуск Зависимость Walker вклисполняемый файл показал, что msvcr90.dll , ieshishm.dll , ieframe.dll и freeglut.dll не найден. Я скопировалони находятся в каталоге execs, и это решило эти проблемы. Однако остаются две проблемы:

Ошибка: параллельная информация о конфигурации для "e: \ projects \ darwin \ code \ debug \ GLTEMPLATE.EXE "содержит ошибки. Приложению не удалось запуститься, поскольку его параллельная конфигурация неверна. См. Журнал событий приложения или используйте инструмент командной строки sxstrace.exe для получения более подробной информации (14001). Предупреждение.Первый модуль имеет неразрешенный импорт из-за отсутствия функции экспорта в зависимом от задержки модуле.

С модулями SHLWAPI.DLL и IEFRAME.DLL, отмеченными красным (при условии, что сообщение об ошибке относится к этим двумкак это исправить?).

Кроме того, sxstrace дал следующий результат:

Begin Activation Context Generation.
Input Parameter:
    Flags = 0
    ProcessorArchitecture = x86
    CultureFallBacks = en-US;en
    ManifestPath = E:\Projects\Darwin\Code\Debug\GLTemplate.exe
    AssemblyDirectory = E:\Projects\Darwin\Code\Debug\
    Application Config File =
INFO: Parsing Manifest File E:\Projects\Darwin\Code\Debug\GLTemplate.exe.
    INFO: Manifest Definition Identity is (null).
    INFO: Reference: Microsoft.VC90.DebugCRT(...)
INFO: Resolving reference Microsoft.VC90.DebugCRT
    INFO: Resolving reference for ProcessorArchitecture x86.
        INFO: Resolving reference for culture Neutral.
            INFO: Applying Binding Policy.
                INFO: No publisher policy found.
                INFO: No binding policy redirect found.
            INFO: Begin assembly probing.
                INFO: Did not find the assembly in WinSxS.
                INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT.DLL.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT.MANIFEST.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
                INFO: Attempt to probe manifest at E:\Projects\Darwin\Code\Debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST.
                INFO: Did not find manifest for culture Neutral.
            INFO: End assembly probing.
    ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
ERROR: Activation Context generation failed.
End Activation Context Generation.
(...)

и еще несколько похожих.

Я также попытался изменить библиотеку времени выполнениякак предложено для других связанных постов из многопоточной отладочной DLL (/ MDd) в многопоточную отладку (/ MTd).Однако я получаю:

MSVCRTD.lib (MSVCR100D.dll): ошибка LNK2005: _printf уже определен в LIBCMTD.lib (printf.obj)

и некоторыееще пять похожих.Исключение LIBCMTD.lib позволяет мне строить.Тем не менее, я все еще не могу запустить приложение.Я получаю ту же ошибку, что и в самом начале.

Что идет не так и как я могу это исправить?

Ни один другой пост не дал мне ответа.

Ответы [ 2 ]

5 голосов
/ 07 марта 2011

В вашем проекте используется одна или несколько библиотек, созданных в Visual Studio 2008, предыдущей версии Visual Studio.Им требуется библиотека времени выполнения C, чтобы эта версия была доступна;вот почему он жалуется на msvcr90.dll.У вас есть Visual Studio 2010;на вашем компьютере установлен только msvcr100.dll.

Простое копирование msvcr90.dll не будет работать;эта DLL должна быть установлена ​​в параллельном кэше Windows.Вы можете получить установщик от Microsoft или от вашего друга.Это, однако, не верное решение;у вас все еще есть проблема с вашим приложением в зависимости от двух версий CRT.Очень вредно для здоровья, это может привести к очень трудным для диагностики сбоям и утечкам памяти.Вам нужно перестроить библиотеки с помощью Visual Studio 2010. Вот где мой совет потерпел неудачу;Я не могу догадаться, что эти библиотеки из вашего вопроса.

1 голос
/ 07 марта 2011

"msvcr90" <- Я почти уверен, что это не версия 2010 года;не релиз в любом случае.Я держу пари, что где-то в миксе вы связываете что-то, созданное с более старым временем выполнения, но недостаточно старое, чтобы установить его с win7. </p>

Вы не хотите переключаться на статическое время выполнения при соединении с третьимпартийные DLL или ваши собственные DLL.

...