Может ли .exe, скомпилированный из C ++, работать автономно с Win 2000 и далее? - PullRequest
3 голосов
/ 03 июня 2019

Я разрабатываю приложение, которое будет работать на серверах Windows и клиентах Win2K и выше.Он написан на AutoIT, языке сценариев автоматизации тестирования на базе Windows, но инструмент анализа кода безопасности, используемый моим клиентом (правительственным агентством), не поддерживает этот язык, поэтому существует опасение, что приложение может быть не одобрено.

Я ищу альтернативный язык для разработки инструмента. Скомпилированный .exe не может требовать каких-либо дополнительных зависимостей времени выполнения, которые еще не установлены в производственной системе - никто не заинтересован в том, чтобы пройти через бюрократизм в течение 10+ летстарая унаследованная система вышла из строя в 2023 году. Это означает, что для начинающих нет зависимости во время выполнения от Python или .NET.Ориентировочно нет JRE либо.Не уверен, какое другое программное обеспечение я должен проверить.

Это приложение должно работать только в Windows.После Google, кажется, невозможно использовать C # без установленного .NET.Другой вариант - C ++.Является ли C ++ .exe автономным?Я только когда-либо программировал на C ++ 7 лет назад в школе, и тогда мне не нужно было отправлять скомпилированный код.Какие еще варианты доступны для меня?

1 Ответ

4 голосов
/ 03 июня 2019

Краткий ответ: Go get Visual Studio 2008 . Это позволит вам создать программу на C / C ++, которую можно скомпилировать в виде отдельного EXE-файла и по-прежнему запускать в Windows 2000 без дополнительных установок зависимостей.Используйте Google, чтобы найти расположение загрузки пакетов обновления для VS2008.

Per Википедия :

Visual Studio 2008 - последняя версия, поддерживающая таргетинг на Windows 2000для приложений C ++.

В Visual Studio есть параметр проекта, называемый Библиотека времени выполнения , который позволяет статически скомпилированному EXE-файлу связываться со средой выполнения Visual Studio C / C ++ вместопринимая зависимость от DLL.Я не могу вспомнить, если VS2008 требовал, чтобы библиотеки MSVCRT были «скопированы» в тот же каталог, что и EXE, или формально «установлены».Поэтому лучше всего просто использовать статически связанную опцию Runtime Library и не беспокоиться об этом.Смотрите картинку ниже.Предполагая, что вы не вызываете API, которые были введены после Windows 2000, EXE-файл, связанный таким образом, должен работать только при копировании на целевой компьютер.

EXE-файлы, созданные в более новых версиях Visual Studio, не гарантированно будут работатьстарые версии Windows.Обычно это зависит от совместимости с C-Runtime.Вот почему я указываю вам на Visual Studio 2008 - это была последняя поддерживаемая версия для ориентации на Windows 2000.

enter image description here

...