Различные версии библиотек C ++

После компиляции простого проекта C ++ с использованием Visual Studio 2008 в Vista все работает нормально на исходной машине Vista и других компьютерах Vista. Однако при его перемещении в ящик XP появляется сообщение об ошибке: «Не удалось запустить приложение из-за неправильной конфигурации приложения».

Что мне нужно сделать, чтобы мой скомпилированный EXE работал в XP и Vista? У меня была такая же проблема несколько месяцев назад, и я просто возился с некоторыми настройками в проекте, исправил ее, но я не помню, какие из них я изменил.


person user16773    schedule 17.09.2008    source источник


Ответы (5)


Вам необходимо установить среду выполнения Visual Studios 2008 на целевой компьютер:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

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

c ++ -> Генерация кода -> Библиотека времени выполнения и выберите "многопоточность / MT"

person rhinovirus    schedule 17.09.2008


Вероятно, вам необходимо распространить среду выполнения VC вместе с вашим приложением. Это можно сделать разными способами. Эта статья от команды Microsoft Visual C ++ лучше всего объясняет различные способы распространения этих зависимостей, если вы используете Visual Studio 2005 или 2008.

Как указано в статье, хотя вы можете загрузить пакет установщика Redistributable и просто запустить его на клиентском компьютере, это почти всегда не оптимальный вариант. Обычно есть более эффективные способы включения необходимых DLL, например включение модуля слияния, если вы распространяете через программу установки Windows или локальную копию приложения, если вы просто хотите распространить заархивированную папку.

Другой вариант - статически связываться с библиотеками времени выполнения, вместо того, чтобы распространять их вместе с вашим приложением. Этот вариант подходит только для автономных EXE, которые не загружают другие библиотеки DLL. Вы также не можете сделать это с библиотеками DLL, загруженными другими приложениями.

person Dusty Campbell    schedule 17.09.2008

Гораздо проще всего установить статическую ссылку на среду выполнения.

c ++ -> Генерация кода -> Библиотека времени выполнения и выберите "многопоточность / MT"

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

Новый проект -> «установка и развертывание» -> «проект установки»

Загрузите выходные данные из проектов приложений (определенных с помощью версии DLL среды выполнения) в проект установщика и соберите его. Зависимость от DLL среды выполнения будет замечена, включена в пакет установщика и аккуратно и ненавязчиво установлена ​​в нужное место на целевой машине.

person ravenspoint    schedule 17.09.2008

Visual Studio 2005 на самом деле имеет два

Один для исходной версии

и один для SP1

person shoosh    schedule 17.09.2008