Подтвердить что ты не робот

Проблемы с запуском exe файла, созданного с помощью Visual Studio на другом компьютере

Я создал клиентское серверное приложение на С++ с помощью Visual Studio.

Теперь я хочу запустить клиентский exe файл на другом компьютере (который не имеет установленной Visual Studio) но когда я пытаюсь запустить exe файл, он выдает следующее сообщение об ошибке:

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

Как я могу запустить exe файл, не устанавливая ничего на компьютере?

4b9b3361

Ответ 1

Я развернул свою программу в версии вместо debug, и exe теперь работает на другом компьютере

Ответ 2

Приложения, созданные с помощью Visual Studio, зависят от Visual С++ Redistibutable (VCRedist). Когда программа динамически связана, тогда ваши двоичные файлы понадобятся MSVCR**.dll (Microsoft C Runtime Library).

В MSDN есть хорошая статья под названием Перераспределение файлов Visual С++ (для Visual Studio 2008), в котором указывается, временные ошибки в случае, если требуемая библиотека Visual С++ не установлена:

вы можете получить одно из следующих сообщений об ошибке в зависимости от версии Windows, на которой вы пытаетесь запустить приложение:

  • Приложению не удалось правильно инициализировать (0xc0000135).
  • Это приложение не удалось запустить, так как неправильная конфигурация приложения. Повторная установка приложения может устранить эту проблему.
  • Система не может выполнить указанную программу.
В принципе у вас есть два варианта:
  • Самое простое решение - изменить динамическое связывание библиотек времени выполнения со статической связью. Перейдите к свойствам проекта, а в разделе C/С++ > Code Generation вы найдете вариант Runtime Library. Вам нужно изменить его с Multi-threaded DLL (/MD) на Multi-threaded (/MT).
  • Еще одно возможное решение - убедиться, что на целевой машине установлена ​​правильная версия Microsoft VС++ Redistributable Package.

Но ваше приложение может зависеть и от других DLL. Если вы хотите узнать, каковы зависимости вашей программы, есть большая утилита, называемая Dependency Walker, что поможет вам в этой и многих других ситуациях:)

Ответ 3

Фон:

  • Приложения на С++ Требуются сборки времени выполнения (DLL) для запуска на любом компьютере Windows.
  • Обычно эти сборки времени выполнения находятся в каталоге C:\Windows\Winsxs.
  • Все операционные системы Windows по умолчанию имеют несколько сборок времени выполнения.
  • Но если ваше приложение разработано в более новой версии среды сборки во время выполнения, целевому компьютеру также нужна такая же версия времени выполнения.
  • Когда вы устанавливаете визуальную студию, вы получаете самые новые версии сборок во время выполнения.

Soloution: Наконец, в любом случае целевой компьютер должен иметь точные сборки времени выполнения. Существует несколько способов сделать это (для более детального поиска в google каждый).

  • Статически связывать сборки времени выполнения с вашим приложением (Troublesome для большого приложения).
  • Установить среду перераспределения С++ на конечном компьютере (наиболее простой способ).
  • Создание проекта установки для развертывания времени выполнения на целевом компьютере при установке приложения. (Неплохо)
  • Развертывание сборок в виде частных сборок (профессиональных) см. здесь для более подробной информации

Условия:

  • Вы не должны использовать .NET framework в своем приложении.
  • Вы не должны использовать поддержку времени выполнения для вашего приложения

Ответ 4

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

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

2) Установите окна, распространяемые на целевой машине. Возможно, это не нормально, вы заявляете, что не хотите устанавливать что-либо на целевой машине.

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

Ответ 5

Похоже, что вам не хватает некоторых DLL файлов. Обязательно скопируйте соответствующую dll вместе с exe.