2010-04-24 4 views
0

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

Благодаря

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

+0

LOL! В первый раз, когда я прочитал этот вопрос, я подумал, что речь идет о видеокассетах. –

+0

lol :-p Я предполагаю, что только статичная ссылка ... – jmasterx

ответ

4

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

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

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

+0

VS2008 все еще работает с libCtiny; что может привести вас к 4-8 КБ (не накладные расходы, весь размер приложения на диске!) – MSalters

+0

@MSalters: Да, но если вы полагаетесь на функциональность CRT, то вы будете сильно удивлены libctiny :(Но даже libctiny необходимо перестроить с помощью vs2010, прежде чем он будет использоваться. –

+0

Очевидно, что вы можете, конечно, добавить статический lib позже, поэтому он будет использоваться только для функций CRT, не предоставляемых libCtiny.Но если вопрос действительно о C++, то замена C lib - это всего лишь половина истории. – MSalters

1

Если вы хотите целевой Windows 98, ваши варианты:

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

Как распределения CRT:

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

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

  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 раз с момента ее запуска.
Смежные вопросы