Настройка компилятора 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. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


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

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