2010-05-10 2 views
-2

У меня есть приложение C++, использующее только базовый Win32 API (я могу удалить это, если необходимо) и C++ STL. Я использую MSVC и хочу, чтобы он был действительно автономным. Я уже пробовал несколько опций (включая использование опции «Многопоточность» вместо «Многопоточная библиотека DLL»).Создание реального автономного приложения для Windows XP с MSVC 2010?

И все же: на многих компьютерах, в том числе в моей школе, пропущено несколько DLL для среды исполнения MSVC.

  • Как я могу создать ++ приложение C, способный работать на Windows XP (и ниже/выше, если это возможно) без необходимости каких-либо конкретных версий DLL только Avaiable с пакетами обновлений и во время выполнения-библиотек DLL установлены?

Должен ли я переключиться на G ++?

Мои требования не такие большие .. Просто небольшой исполняемый файл размером 35 КБ, содержащий некоторые циклы здесь и некоторые, если есть.

+1

Просьба указать, какие именно DLL сообщения отсутствуют. Точная орфография важна - например, если вы пытаетесь распределить сборку отладки. – ravenspoint

+0

@ravenspoint: те, которые поставляются с новейшим пакетом Runtime Microsoft C++. Я не знаю, как может помочь список имен, это не так просто, как копирование некоторых файлов в system32. –

+3

@ Мое имя здесь: вы, возможно, не знаете, как может помочь список имен, но вы могли бы предположить, что момент, который могут знать те, кто * спросил * вас за список? Поскольку вы просите о помощи, вам придется полагаться на то, что * другие * люди знают в любом случае. Поэтому вы можете начать с предположения, что когда они попросят вас получить информацию, это может быть просто потому, что им нужна информация, которая вам поможет. – jalf

ответ

3

Если вы используете статические ссылки для всех библиотек, которые вы используете, вам не нужны никакие DLL. Вы уверены, что не используете MFC или ATL DLL или что-то еще? Установка библиотеки времени выполнения на «многопоточность» вместо «многопоточной DLL» должна делать трюк для ЭЛТ и удалять любую зависимость от DLL MSVCRT. В общих свойствах должна быть аналогичная настройка, например «использовать стандартные заголовки окон».

Если вы используете Visual Studio 2010, для ЭЛТ требуется Windows XP с пакетом обновления 2 (SP2) или более поздней версии (поэтому RTM или SP1 не будут работать). Если вам нужно настроить таргетинг до XP SP2, вам, вероятно, нужно вернуться к Visual Studio 2008.

4

Ну, вы уже нашли вариант, который вам нужно изменить. Щелкните правой кнопкой мыши проект в окне «Обозреватель решений», «Свойства», «C/C++», «Генерация кода», «Библиотека времени выполнения» =/MTd. В результате EXE имеет только зависимость от kernel32.dll, Windows.

Не забудьте также сделать это для конфигурации сборки выпуска. Теперь выберите/MT.

+0

Self-quote: * Я уже пробовал несколько опций (включая использование опции «Многопоточность» вместо «Многопоточная библиотека DLL»). Это означает, что я попытался, но не сделал результат «автономным». –

+0

Self-quote: * Не забудьте также сделать это для конфигурации сборки релиза. * –

+3

имя идет здесь: тогда вы сделали что-то еще неправильно. Не так много может сказать кто-нибудь из нас: @Hans рассказал вам, какой параметр удаляет зависимость от dll runtime, если у вас все еще есть зависимость от этой DLL, вы сделали что-то не так.Я не использую свои психические навыки отладки в будние дни, поэтому вам нужно будет дать нам некоторую информацию о том, что вы делаете. – jalf