Памылка C2039: «SetDefaultDllDirectories»: не з'яўляецца членам глабальнага прасторы імёнаў

ххх \ VC \ atlmfc \ ўключаць \ atlcore.h (638): памылка 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

функцыі ў ім не ўсе зразумелі, В.С.
так як я магу вырашыць гэтую праблему?
там нешта не так з libray? Я запусціць гэтую праграму ў VS2012

9

7 адказы

Вы павінны пераканацца, што «_USING_V110_SDK71_» вызначаецца ва ўласцівасцях праекта. Visual Studio аўтаматычна вызначае гэта для вас. Як правіла, яна не «паказаць», таму што «успадкаваць ад бацькоўскага ці праекта па змаўчанні» з'яўляецца неўстаноўленым.

Я знайшоў, што гэта часта, калі абнаўленне ад старых АТЛ праектаў, якія stdafx.cpp мае «успадкаваць ад бацькоўскага ці праекта па змаўчанні» неўстаноўленым па нейкай прычыне.

Вы павінны праверыць і наладу праекта, а таксама налады асобных stdafx.cpp файлаў, каб вызначыць, што ў вызначэннях препроцессора «успадкаваць ад бацькоўскага ці праекта па змаўчанні» сцяжок. У некаторых выпадках дыялогавае акно вызначэння препроцессора файла праекта правяраецца, аднак дыялог препроцессора вызначэння пэўнага файла stdafx.cpp не правяраецца.

10
дададзена
«Успадкаваць ад бацькоўскага ці праекта па змаўчанні» упраўлення tickbox, калі «;% (PreprocessorDefinitions)» ёсць ці не. Калі дадаць/выдаліць гэта ўручную, вы знойдзеце змены tickbox. Гэта прасцей праверыць tickbox што ўспомніць "% (PreprocessorDefinitions)» :)
дададзена аўтар Shane Powell, крыніца
Калі C/C ++ і рэсурсы препроцессора Вызначэнне настроены на старонцы уласцівасцяў праекта, пераканайцеся, што яны сканчаюцца <�б>,% (PreprocessorDefinitions) . Гэта выклікала праблемы з нявызначаным _USING_V110_SDK71 _ сімвал праекта мігравалі з VS2005 на VS2010 і VS2015 цяпер - гэта не хапала для x86/x64 канфігурацый адладкі, але не канфігурацый выпуску.
дададзена аўтар UweBaemayr, крыніца
Ах да, я бачу. Вы павінны выбраць Праўка з выпадальнага меню ў вызначэннях препроцессора бачыць. Я думаў, што вы мелі на ўвазе «<�успадкаваць ад бацькоўскага ці значэнні па змаўчанні Project>» пункт у выпадальным спісе, які сцірае прыстасаваныя наладкі. Я не прасвідраваць досыць глыбока і досыць сапраўды, усталюйце/зніміце сцяжок прычыны,% (PreprocessorDefinitions), якія будуць дададзеныя і выдаленыя.
дададзена аўтар UweBaemayr, крыніца

Я таксама сустрэў гэтае пытанне на VS 2012.

Гэта выклікана тым, што вы выкарыстоўваеце Windows SDK 7.1, які адчувае недахоп у SetDefaultDllDirectories выклік функцыі ў VS 2012 (VC11). Вы можаце заўважыць, ёсць #ifndef _USING_V110_SDK71 _ ахоўваў сцяг, каб пазбегнуць выкарыстання нявызначаную SetDefaultDllDirectories .

Проста вызначыць _USING_V110_SDK71 _ у вашым праекце, каб дазволіць SDK ведае, што вы ў гэтым наборы інструментаў або абнаўленне да больш высокай версіі SDK.

3
дададзена

Changing the order of Include Directories and included SDK folder works for me: $(IncludePath);C:\Program Files x86\Microsoft SDKs\Windows\v7.1A\Include

Калі я стаўлю тэчку C: \ Program Files% 28x86% 29 \ Microsoft SDKs \ Windows \ v7.1A \ Include перад $ (INCLUDEPATH) , я атрымліваю гэтую памылку.

2
дададзена

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

Крок 1

Запусціце камандны радок візуальнай студыі, якія вы карыстаецеся

Крок # 2 выканаць гэтую каманду.

devenv /useenv

гэтая каманда адкрые Visual Studio, а затым адкрыйце свой праект і скампіляваць.

1
дададзена
  1. Put following lines in include above all

    $(VC_IncludePath)
    $(WindowsSDK_IncludePath)

  2. Uncheck check box "inherit from parent or project defaults"

1
дададзена

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

0
дададзена

Я капіюю _USING_V110_SDK71_ у частцы C/C ++ у падгаліны препроцессор/вызначэнні препроцессора і адзін раз unchech ў спадчыну ад бацькі ... і зрабіць пабудаваць праект, а затым пераправерыць гэтую опцыю і вырашыць праблему

0
дададзена