Прокрутить к контенту ↓


Visual Studio 2015 Update 2 — решаем проблемы

После установки обновления Update 2 для популярной бесплатной среды программирования Microsoft Visual Studio 2015 Community последовательно возникли две проблемы при сборке проектов C++ с включённой поддержкой Windows XP («General» → «Platform Toolset» → «Visual Studio 2015 - Windows XP (v140_xp)» в свойствах проекта):

  1. IDE не находила заголовочный файл windows.h (главный WinAPI-заголовок), что приводило к «фатальной ошибке» компилятора:

    fatal error C1083: Cannot open include file: 'windows.h': No such file or directory

  2. возникала ошибка «Unresolved external» компоновщика при использовании функций типа GetModuleFileNameExW() из стандартной WinAPI-библиотеки Psapi:

    error LNK2019: unresolved external symbol _GetModuleFileNameExW@16 referenced in function […]
    fatal error LNK1120: 1 unresolved externals

windows.h — фатальная ошибка

Судя по всему, для проектов, ориентированных на сборку с поддержкой Windows XP, в значении по умолчанию параметра «Include Directories» в разделе «VC++ Directories» свойств проекта теперь вместо $(WindowsSDK_IncludePath) фигурирует $(WindowsSdk_71A_IncludePath). Это, вероятно, можно трактовать как шаг Microsoft в направлении полного отказа от поддержки Windows XP как целевой платформы в Visual Studio.

Соответственно, проблему с windows.h можно решить сбросом параметра «Include Directories» на значение по умолчанию («inherit from parent or project defaults») и повторным добавлением прежних дополнительных путей уже к этому новому значению по умолчанию.

Psapi — unresolved external

Что касается Psapi, пришлось добавить ;Psapi.lib в параметр «Additional Dependencies» в разделе «Linker → Input» в свойствах проекта; т. е. теперь подключения psapi.h в исходном коде программы недостаточно, и необходимо явным образом подключить ещё и статическую lib-библиотеку. То же, вероятно, касается и некоторых других библиотек.

P. S. Кстати, генерируемые VS 2015 Update 2 исполняемые файлы имеют примерно на 20% больший объём по сравнению с Update 1 при прочих равных.