Сводка: Необъявленный идентификатор SetDefaultDllDirectories
из atlcore.h
сообщается при компиляции версии Release, но это нормально при компиляции Debug. Дальнейшее расследование показывает, что роль играет _USING_V110_SDK71_
. Он должен быть унаследован от дефолтов проекта (см. рисунок ниже), но не для комбинации: Release MinDependency и v140_xp.
Подробности. Я переношу родное приложение C++ ATL с Visual C++ 2005 на Visual C++ 2015. Цель состоит в том, чтобы как можно дольше поддерживать работающую версию Windows XP. Поэтому для проекта был установлен набор инструментов платформы v140_xp. Он отлично работает для отладочной версии. Однако это вызывает ошибку компиляции для версии Release MinDepency. При использовании v140 (без _xp) компилируется нормально.
Это ветвь приложения, которую необходимо перенести. Я уже успешно мигрировал другие ветки (более ранние) на VC++ 2008, 2010, 2012 и 2013. (Или я что-то забыл сделать, или сейчас другая ситуация.)
Я видел эту ошибку, также упомянутую в другом месте; однако причины могут быть разными. Полная строка ошибки:
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\atlcore.h(644):
error C2065: 'SetDefaultDllDirectories':undeclared identifier
Проблемные линии используются для случая, когда
#ifndef _USING_V110_SDK71_
Итак, видимо, этот символ не был определен. Я использую Visual Studio 2015 Professional версии 14.0.23107.0 D14REL и Windows 8.1.
При проверке настроек проекта должен быть определен символ _USING_V110_SDK71_
, унаследованный от значений проекта по умолчанию.
Обновление: сообщение об ошибке и строки вокруг него в окне вывода:
1>------ Build started: Project: Market, Configuration: Release MinDependency Win32 ------
1> SplashScreen.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\sal_supp.h(57): warning C4005: '__useHeader': macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\sal.h(2886): note: see previous definition of '__useHeader'
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\specstrings_supp.h(77): warning C4005: '__on_failure': macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\sal.h(2896): note: see previous definition of '__on_failure'
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\atlcore.h(644): error C2039: 'SetDefaultDllDirectories': is not a member of '`global namespace''
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\atlcore.h(644): error C2065: 'SetDefaultDllDirectories': undeclared identifier
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\atlcore.h(646): error C2065: 'LOAD_LIBRARY_SEARCH_SYSTEM32': undeclared identifier
1>c:\program files (x86)\microsoft visual studio 14.0\vc\wtl90\include\atlgdi.h(470): warning C4838: conversion from 'int' to 'UINT' requires a narrowing conversion
1>c:\program files (x86)\microsoft visual studio 14.0\vc\wtl90\include\atlgdi.h(477): warning C4838: conversion from 'int' to 'UINT' requires a narrowing conversion
1>c:\program files (x86)\microsoft visual studio 14.0\vc\wtl90\include\atlgdi.h(484): warning C4838: conversion from 'int' to 'UINT' requires a narrowing conversion
1>c:\program files (x86)\microsoft visual studio 14.0\vc\wtl90\include\atlgdi.h(491): warning C4838: conversion from 'int' to 'UINT' requires a narrowing conversion
1>c:\program files (x86)\microsoft visual studio 14.0\vc\wtl90\include\atlgdi.h(3683): warning C4838: conversion from 'LONG' to 'DWORD' requires a narrowing conversion
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Не могли бы вы пролить свет на это? Спасибо