Использовать старую версию MSVCR? - PullRequest
0 голосов
/ 25 апреля 2010

У меня VS 2008, и я хочу, чтобы мое приложение работало с Windows 98 без необходимости включать MSVCR90.dll. Win98 поставляется с MSVCR60, так как я могу сказать MSVC сделать это? Является ли мой единственный способ выследить Visual Studio 6?

Спасибо

* также хочу избежать статического связывания msvcr

Ответы [ 3 ]

4 голосов
/ 25 апреля 2010

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

также хочу избежать статического связывания msvcr
Зачем? Это похоже на вполне правильное решение этой проблемы. Конечно, вы платите за код около 100 КБ, но это того стоит, если вы вынуждены использовать глючный и несоответствующий компилятор Visual Studio 6.

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

1 голос
/ 25 апреля 2010

Если вы хотите настроить таргетинг на Windows 98, вы можете выбрать:

  • Во-первых, максимальная версия Visual Studio 2005. 2008 и более поздняя версия с минимальной версией ОС 5.0 в заголовке EXE - Windows 98 просто не будет загружать двоичные файлы, созданные VS 2008.

Что касается распределения CRT:

  • Распространите новую среду выполнения с вашим приложением. Я предпочитаю такой подход, если в вашем приложении много dll, поскольку статическое связывание делает все намного больше, чем нужно. Кроме того, существует множество ограничений на использование c ++ из dll, которые облегчаются, если вы хотя бы разделяете реализацию c-runtime между всеми модулями процесса.

Если вы не являетесь "активным" пользователем функций c ++, таких как исключения, и STL, вы можете избежать использования ссылок вообще ни на одном компьютере. В противном случае ваши варианты:

  1. Используйте не MS-компилятор, такой как MinGW. MinGW использует последнюю версию GCC, поэтому вы получаете C99 и C ++ 98, C ++ 03, TR1 и т. Д. И он использует msvcrt.dll. Code :: Blocs - это "ОК" IDE, если вы никогда не использовали Visual Sutdio и / или получил слишком много ударов по голове.
  2. Загрузить Windows DDK. Вам нужно будет собрать из командной строки и испачкать файлы make, но это бесплатно, и DDK использует компилятор и компоновщик VS2005, но специально настроен для связи с msvcrt.dll, а не с msvcr80.dll. Было сочтено слишком рискованным требовать, чтобы драйверы устройств связывались со средой выполнения, которая может отсутствовать.
  3. Visual Studio 6 в качестве окончательного варианта восстановления. Ужасная Ужасная поддержка C ++ 98. По крайней мере, вы получаете симпатичную IDE, и теперь должно быть чертовски быстро, когда компьютеры теоретически удвоились по скорости / емкости в 8 раз с момента запуска.
0 голосов
/ 09 ноября 2011

Среда выполнения с низкими издержками Microsoft Visual Studio C - это статически связываемая среда выполнения C, которая максимально использует доступные библиотеки DLL, уже распространяемые с Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...