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



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



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




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




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

919   5  

5 ответов:

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

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

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

  • приложение не удалось правильно инициализировать (0xc0000135).
  • это приложение не удалось запустить из-за неправильной конфигурации приложения. Переустановка приложения может устранить эту проблему.
  • система не может выполнить указанную программу.
В основном у вас их два опции:
  • самым простым решением является изменение динамического связывания библиотек времени выполнения на статическое связывание. Перейдите в свойства проекта и в разделе C / C++ > генерация кода вы найдете опцию библиотека времени выполнения. Вам нужно изменить его с Multi-threaded DLL (/MD) на Multi-threaded (/MT).
  • Другое возможное решение-убедиться, что на целевой машине установлена правильная версия распространяемого пакета Microsoft VC++.

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

Предыстория:

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

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

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

Условия:

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

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

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

2) Установите распространяемый пакет windows на целевой машине. Это, вероятно, не нормально, если вы заявляете, что не хотите ничего устанавливать на целевой машине.

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

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

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

Comments

    Ничего не найдено.