Программа, построенная на Win7, не будет работать на WinXP - PullRequest
5 голосов
/ 11 июня 2011

У меня есть проект, который я создаю в Windows 7 (32-разрядная версия) с использованием Visual Studio 2005. Программа прекрасно работает, и я могу перенести его на другой компьютер с Windows 7 и запустить его просто отлично. Проблема возникает, когда я пытаюсь переместить его на компьютер с Windows XP Pro. Когда я пытаюсь запустить файл, я получаю следующую ошибку:

"Не удалось запустить данное приложение, поскольку его конфигурация неверна. Повторная установка приложения может решить эту проблему."

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

  • Не удалось найти зависимую сборку Microsoft.VC80.CRT, и последняя ошибка была. Указанная сборка не установлена ​​в вашей системе.
  • Не удалось разрешить частичную сборку для Microsoft.VC80.CRT. Ссылочное сообщение об ошибке: Ссылочная сборка не установлена ​​в вашей системе.
  • Создать контекст активации не удалось для [путь к моему exe]. Ссылочное сообщение об ошибке: Операция успешно завершена.

Я пытался установить распространяемый пакет Visual C ++ 2005 с пакетом обновления 1 (SP1), который не помогает.

Если я собираю проект на компьютере с XP, я могу запустить его на другом компьютере с XP (на котором нет распространяемого C ++) и на компьютере под управлением Windows 7.

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

Ответы [ 5 ]

1 голос
/ 11 июня 2011

Проверьте отсутствующие системные библиотеки DLL с помощью Dependency Walker, если это собственный двоичный файл - http://www.dependencywalker.com/

Также убедитесь, что вам нужно WINVER - http://msdn.microsoft.com/en-us/library/aa383745%28v=vs.85%29.aspx, в противном случае SDK вернется к версии SDK, то есть Vista + для более новых версий. Поэтому вы можете случайно вызвать несколько функций, которые даже не доступны в XP.

0 голосов
/ 13 июля 2011

Мы столкнулись с подобной проблемой после обновления нашей версии Visual Studio до Visual Studio 2005 SP1. Поставляется с обновленной версией MFC и CRT.

Вы можете обнаружить проблему, используя Dependency Walker (http://www.dependencywalker.com/).

Если это так, попробуйте убедиться, что обновление Windows применено. Вы также можете загрузить и запустить распространяемый пакет Visual Studio 2005 с пакетом обновления 1 (SP1).

Visual Studio 2005 распространяется повторно http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14431

Visual Studio 2005 с пакетом обновления 1 (SP1) http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5638

Вивиан Де Смедт.

0 голосов
/ 13 июня 2011

Вот что в итоге решило проблему:

Скопируйте следующую папку: "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT" (так как этот файл упоминается в программе просмотра событий) в тот же каталог, что и .exe, который у меня возникли при выполнении. Это позволяет программе использовать зависимость, против которой она была построена.

0 голосов
/ 11 июня 2011

Сборки .NET, а не нативный код. Возможно, вам не хватает .NET Framework. Распространяемый Visual C ++ не будет включать сборку .NET.

0 голосов
/ 11 июня 2011

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

Вы можете либо:

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

  • собирайте программное обеспечение один раз для каждой системы, в которой вы собираетесь его развернуть. Это больше работы, но это означает, что вы можете настроить свое программное обеспечение на использование преимуществ новых API и возможностей, поскольку они доступны на различных итерациях выпуска платформы.

...