Настройка компилятора Visual C++ 2005 Express Edition от Visual Studio 2005 в Windows XP

archive view archive save

Предполагается, что Visual C++ 2005 Express Edition (Microsoft Visual Studio 2005) в Windows XPу вас уже установлен. В процессе компиляции исходников на C++ могут возникать ошибки типа "fatal error C1083: Cannot open include file: 'windows.h'", "Cannot include "winsock2.h"" и т.п.

Появление ошибок "fatal error C1083: Cannot open include file: 'windows.h'", "Cannot include "winsock2.h"" говорит про отсутствие в системе необходимых библиотек или про отсутствие нужных настроек и СИСТЕМНЫХ переменных с полными путями к этим библиотекам.

Для полноценной (успешной) компиляции большинства исходных кодов на C++ в Visual C++ 2005 Express Edition от Microsoft Visual Studio 2005, нам обязательно требуется установка "Microsoft® Windows® SDK", для ОС Windows Server 2003, Windows Server 2008, Windows Vista, Windows XP нам нужен Windows SDK for Windows Server 2008 and .NET Framework 3.5 (1.3 GB) и опционально DirectX SDK (571.7 MB):

После загрузки и установки "Windows SDK for Windows Server 2008 and .NET Framework 3.5" откройте Visual C++, в панели управления Visual C++ 2005 Express Edition от Microsoft Visual Studio 2005 выберите "Tools -> Options", разверните пункт "Projects and solutions", выберите подпункт "VC++ Directories" на этой вкладке выберите "Platform -> Win32 Show directories for: Include files" и добавьте путь к заголовочным файлам, повторите манипуляции для "Executable files", "Library files" и "Reference files", например:

  • Executable files - D:\Program\MicrosoftSDKs\Win\v6.1\bin
  • Include files - D:\Program\MicrosoftSDKs\Win\v6.1\Include
  • Library files - D:\Program\MicrosoftSDKs\Win\v6.1\Lib
  • Reference files - D:\Program\MicrosoftSDKs\Win\v6.1\Help\1033

Для платформ IA64 и x64 в каталоге D:\Program\MicrosoftSDKs\Win\v6.1\Lib есть одноимённые каталоги и путь соответственно нужно указывать к ним если у вас платформа IA64 или x64! Официальные рекомендации ПО настройке компилятора Visual C++ 2005 Express Edition от Visual Studio 2005 в Windows XP мы выполнили.

Теперь относительно установки Windows SDK for Windows Server 2008 and .NET Framework 3.5, а вернее дополнительной настройки окружения при построении из командной строки. В каталоге D:\Program\MicrosoftSDKs\Win\v6.1\ есть файл SetEnv.Cmd для установки переменных окруженияLIB, INCLUDE, CPU, APPVERпри построении из командной строки (например: http://msdn.microsoft.com/ru-ru/library/f2ccy3wt%28v=vs.90%29.aspx) - запускаем, устанавливаем: SetEnv.Cmd /x86 /xp /Release.

Однако, результатом запуска "SetEnv.Cmd /x86 /xp /Release" может быть сообщение "The x86 compilers are not currently installed. Please go to Add/Remove Programs to update your installation. Setting SDK environment relative to D:\Program\MicrosoftSDKs\Win\v6.1. Targeting Windows XP x86 RELEASE".

Это происходит потому, что пакетный файл SetEnv.Cmd в процессе своего выполнения ПО умолчанию пытается искать %VCTools%\bin\cl.exe отталкиваясь от предустановленной в SetEnv.Cmd переменной %VCRoot%

ELSE (
    SET RegKeyPath=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VC7
    SET VSRegKeyPath=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7
    SET "VCRoot=%ProgramFiles%\Microsoft Visual Studio 9.0"
    SET "VSRoot=%ProgramFiles%\Microsoft Visual Studio 9.0\"
)

Подсветив переменную %VCTools% мы увидим не верный путь поиска "С:\ProgramFiles\Microsoft Visual Studio 9.0bin\cl.exe" имхо в реальности азм есьм "С:\ProgramFiles\Microsoft Visual Studio 9.0\VC\bin\cl.exe".

Временами указанных выше манипуляций c SetEnv.Cmd /x86 /xp /Release бывает не достаточно для настройки окружения при построении из командной строки в силу кривого SetEnv.Cmdи в таких случаях в процессе компиляции мы можем получать ошибки вроде "Cannot include "winsock2.h""!

Если это происходит, тогда нам или нужно отрихтовать SetEnv.Cmd:

:: стр. 123, 128
SET "VCRoot=%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\"

:: стр. 133
SET "VCRoot=%ProgramFiles%\Microsoft Visual Studio 9.0\VC\"

Или же следует дополнительно и в рукопашную создать СИСТЕМНЫЕ переменные имена которых находятся в SetEnv.Cmd после метки ":Set_XPx86" (SET Windows XP x86 specific variables)LIB, INCLUDE, CPU, APPVER.

Системные переменные LIB и INCLUDE формируются в SetEnv.Cmd из переменных:

SET MSSdk=D:\Program\MicrosoftSDKs\Win\v6.1
Set SdkTools=%MSSdk%\Bin
Set OSLibraries=%MSSdk%\Lib
Set OSIncludes=%MSSdk%\Include;%MSSdk%\Include\gl
VCLibraries=%VCRoot%Lib
    C:\Program Files\Microsoft Visual Studio 9.0\VC\Lib
VCIncludes=%VCRoot%Include
    C:\Program Files\Microsoft Visual Studio 9.0\VC\include
Lib=%VCLibraries%;%OSLibraries%; Include=%VCIncludes%;%OSIncludes%;

С учётом багов формирования в SetEnv.Cmd рабочих переменных %VCTools% и %VCRoot% соответственно, мы должны в ручную установить СИСТЕМНЫЕ переменные LIB, INCLUDE, CPU, APPVER с такими значениями:

  • LIB - C:\Program Files\Microsoft Visual Studio 9.0\VC\Lib;D:\Program\MicrosoftSDKs\Win\v6.1\Lib
  • INCLUDE - C:\Program Files\Microsoft Visual Studio 9.0\VC\include; D:\Program\MicrosoftSDKs\Win\v6.1\Include; D:\Program\MicrosoftSDKs\Win\v6.1\Include\gl
  • CPU - i386
  • APPVER - 5.01

СИСТЕМНУЮ переменную CPU очевидно следует добавить в обязательном порядке, так как её значение с большей долей вероятности будет использоваться при компиляции, а добавление переменной APPVER вероятно может быть опционально.

Дальше мы должны, да просто обязаны, убедится в том, что СИСТЕМНАЯ переменная Path содержит значения переменных "%VCTools%;%VSTools%;%SdkTools%;%FxTools%;" формирующихся в SetEnv.Cmd:

SET MSSdk=D:\Program\MicrosoftSDKs\Win\v6.1
Set SdkTools=%MSSdk%\Bin
..........
Set "VCTools=%VCRoot%Bin"
    С:\ProgramFiles\Microsoft Visual Studio 9.0\VC\bin
Set "VSTools=%VCRoot%vcpackages;%VSRoot%Common7\IDE"
    C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages;
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE
SET "FxTools=%windir%\Microsoft.NET\Framework\v3.5; %windir%\Microsoft.NET\Framework\v2.0.50727"
SET Path=%VCTools%;%VSTools%;%SdkTools%;%FxTools%;!Path!

В нашем случае в переменную Path мы должны вручную добавить следующие пути: С:\ProgramFiles\Microsoft Visual Studio 9.0\VC\bin; C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages; C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE; D:\Program\MicrosoftSDKs\Win\v6.1\Bin; C:\WINDOWS\Microsoft.NET\Framework\v3.5; C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

Мы добавили вручную те пути которые не смог добавить SetEnv.Cmd, а также следовало бы убедится в наличии в переменной Path следующих путей: D:\Program\Visual_Studio\Common7\Tools; D:\Program\Visual_Studio\SDK\v2.0\bin;

В вашем случае они конечно могут отличатся в зависимости от каталога установки Visual Studio 2005. Просмотреть полный список установленных переменных можно выполнив "set > set.txt" или просто set.

Если устанавливали DirectX SDK, то так же пропишем в переменную Path %DXSDK_DIR%\Utilities\Bin\x86.

Обычно это всё настройки Visual C++ 2005 Express Edition которые требуются для нормальной компиляции программ на C++ в Visual Studio 2005, однако в некоторых случаях, например при отладке программ, нам потребуется Windows Symbol Packages, после загрузки и установки которого нужно будет создать СИСТЕМНУЮ переменную _NT_SYMBOL_PATH в которой прописать полный путь к Windows Symbol Packages (например: C:\WinDBG\Symbols\XP) для вашей платформы.

Для установки постоянных пользовательских и системных переменных из cmd (.bat, .cmd) можно использовать программу SETENV.EXE или использовать комманду REG ADD для добавления переменной в реестр.

ВНИМАНИЕ! Изменение системных переменных записывается в системный реестр, и для их применения обычно требуется перезагрузка компьютера. Не следует добавлять папки в системную переменную Path, если они не защищены надежным образом, так как злоумышленник может поместить в эту папку «троянского коня» или другую вредоносную программу. Выполнение такой программы в Windows может вызвать угрозу для важных данных, потерю данных или частичный или полный сбой системы.

С недавних пор Microsoft Visual Studio 2005, бывший ранее доступный для загрузки ПО ссылке http://www.microsoft.com/rus/express/2005/download/default.aspx, уже не доступен для загрузки, что от большей части связано с взломом его активации, а так же активным продвижением новых продуктов Microsoft Visual Studio 2010, Microsoft Visual Studio 2012 и т.д..

Активное продвижение новых продуктов Microsoft и прочего ПО более требовательного к ресурсам на прямую взаимосвязано с продвижением нового железа, что имеет явные черты заговора направленного на повышение прибыли участников сего процесса.

Но, не смотря на заговор между производителями ПО и железа Microsoft Visual Studio 2005 всё ещё можно отыскать для загрузки во всемирной сети Интернет.

Автор: Олег Головский


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Комментарии в блоге
Новое на форуме