2013-05-22 4 views
8

ххх \ VC \ atlmfc \ включать \ atlcore.h (638): ошибка C2039: «SetDefaultDllDirectories»: не является членом "глобального пространства имен"ошибка C2039: «SetDefaultDllDirectories»: не является членом глобального пространства имен

#ifndef _USING_V110_SDK71_ 
    // the LOAD_LIBRARY_SEARCH_SYSTEM32 flag for LoadLibraryExW is only supported if the DLL-preload fixes are installed, so 
    // use LoadLibraryExW only if SetDefaultDllDirectories is available (only on Win8, or with KB2533623 on Vista and Win7)... 
    IFDYNAMICGETCACHEDFUNCTION(L"kernel32.dll", SetDefaultDllDirectories, pfSetDefaultDllDirectories) 
    { 
     return(::LoadLibraryExW(pszLibrary, NULL, LOAD_LIBRARY_SEARCH_SYSTEM32)); 
    } 
#endif 

функции в нем все не реализованы VS
так как я могу решить эту проблему?
Есть ли что-то не так с libray? Я запускаю эту программу в VS2012

ответ

9

Вы должны убедиться, что «_USING_V110_SDK71_» определяется в ваших свойствах проекта. Visual Studio автоматически определяет это для вас. Обычно он не «отображается», потому что «Наследовать от родительских или проектов по умолчанию» не отмечено.

Я нашел это обычным при обновлении старых проектов atl, которые по какой-то причине stdafx.cpp имеют «Наследовать от родительских или проектов по умолчанию».

Вы должны проверить как настройки проекта, так и отдельные параметры файла stdafx.cpp, чтобы определить, что в определениях препроцессора установлен флажок «Наследовать от родительских или по умолчанию по умолчанию». В некоторых случаях проверяется диалоговое окно Определения препроцессора файла проекта, однако диалоговое окно Определения препроцессора конкретного файла stdafx.cpp НЕ проверяется.

+1

Если определения свойств препроцессора C/C++ и ресурсов настроены на странице свойств проекта, убедитесь, что они заканчиваются на __;% (PreprocessorDefinitions) __. Это вызвало проблему с неопределенным символом __ \ _ USING_V110_SDK71 \ ___ для проекта, перенесенного с VS2005 на VS2010, а теперь VS2015 - это отсутствовало для конфигураций отладки x86/x64, но не для конфигураций выпуска. – UweBaemayr

+1

«Унаследовать от родительских или проектов по умолчанию» элементы управления тегами, если «;% (PreprocessorDefinitions)» есть или нет. Если вы добавите/удалите это вручную, вы увидите изменения меток. Легче проверить флажок, который нужно запомнить »;% (PreprocessorDefinitions)» :) –

+0

А, да, я вижу. Вы должны выбрать «Редактировать» из раскрывающегося списка в определениях препроцессора, чтобы увидеть это. Я думал, что вы ссылаетесь на элемент "в раскрывающемся списке, который уничтожает настройки. Я не просверлил достаточно глубоко и уверенно, проверяя/сняв флажок с причин:% (PreprocessorDefinitions), которые нужно добавить и удалить. – UweBaemayr

0

У меня была аналогичная проблема с использованием VS2008, она не признавала функцию. Я решил это, добавив DDX_Control в DoDataExchange (CDataExchange * pDX).

-1
  1. Помещенные следующие строки в включают прежде всего

    $(VC_IncludePath)
    $(WindowsSDK_IncludePath)

  2. Снимите флажок флажок "Наследовать от родительского или проекта по умолчанию"

3

я также встретил этот вопрос на VS 2012.

Это вызвано тем, что вы используете Windows SDK 7.1, которому не хватает SetDefaultDllDirectories вызов функции в VS 2012 (VC11). Вы можете заметить, что существует #ifndef _USING_V110_SDK71_ охраняемый флаг, чтобы избежать использования неопределенного SetDefaultDllDirectories.

Просто укажите _USING_V110_SDK71_ в своем проекте, чтобы SDK знал, что вы находитесь в этом наборе инструментов или обновите до более высокой версии SDK.

1

Изменение порядка Включить каталогов и включены папки SDK работает для меня: $(IncludePath);C:\Program Files x86\Microsoft SDKs\Windows\v7.1A\Include

Если я ставлю папку C:\Program Files %28x86%29\Microsoft SDKs\Windows\v7.1A\Include перед тем $(IncludePath), я получаю эту ошибку.

-1

У меня была та же проблема. этот трюк работает для меня. эта проблема возникает, когда визуальная студия не может правильно загрузить среду разработки. не может загружать переменные среды. поэтому я пробовал это, и он отлично работает.

Шаг № 1

команда Start приглашение визуальной студии, которую вы используете

Шаг # 2 запустить эту команду.

devenv /useenv 

Эта команда откроет визуальную студию, а затем откроет ваш проект и скомпилирует его.

Смежные вопросы