Mfc 错误C2039:&x201C;SetDefaultDllDirectories”;:不是全局命名空间的成员

Mfc 错误C2039:&x201C;SetDefaultDllDirectories”;:不是全局命名空间的成员,mfc,Mfc,xxx\vc\atlmfc\include\atlcore.h(638):错误C2039:“SetDefaultDllDirectory”:不是“全局命名空间”的成员 其中的功能都不是由VS实现的 那么我该如何解决这个问题呢? 库有什么问题吗?我在VS2012中运行这个程序,您必须确保在项目属性中定义了“\u USING_V110\u SDK71”。VisualStudio会自动为您定义此选项。它通常不会“显示”,因为“从父项或项目默认值继承”未勾选 我发现,从旧atl项目升级时,由于某种原因,

xxx\vc\atlmfc\include\atlcore.h(638):错误C2039:“SetDefaultDllDirectory”:不是“全局命名空间”的成员

其中的功能都不是由VS实现的
那么我该如何解决这个问题呢?

库有什么问题吗?我在VS2012中运行这个程序,您必须确保在项目属性中定义了“\u USING_V110\u SDK71”。VisualStudio会自动为您定义此选项。它通常不会“显示”,因为“从父项或项目默认值继承”未勾选


我发现,从旧atl项目升级时,由于某种原因,stdafx.cpp“继承自父项目或项目默认值”未勾选,这种情况很常见


您应该同时选中项目设置和单个stdafx.cpp文件设置,以确定在预处理器定义中选中了“从父级或项目默认值继承”复选框。在某些情况下,会选中项目文件的“预处理器定义”对话框,但不会选中特定stdafx.cpp文件的“预处理器定义”对话框。

我在使用VS2008时遇到过类似问题,它无法识别函数。我通过将DDX\U控件添加到DoDataExchange(CDATA Exchange*pDX)解决了这个问题

  • 把以下几行放在include中

    $(VC\u包括路径)

    $(WindowsSDK\u包括路径)

  • 取消选中“从父项或项目默认值继承”复选框


  • 我在VS 2012上也遇到了这个问题

    这是因为您使用的Windows SDK 7.1在VS 2012(VC11)中缺少
    SetDefaultDllDirectories
    函数调用。您可能会注意到有
    #ifndef\u使用了_V110\u SDK71
    保护标志,以避免使用未定义的
    SetDefaultDllDirectories


    只需在您的项目中使用_V110_SDK71_定义
    ,让SDK知道您在这个工具集中,或者升级到更高版本的SDK。

    更改包含目录和包含SDK文件夹的顺序对我来说很有用:
    $(包括路径);C:\Program Files x86\Microsoft SDK\Windows\v7.1A\Include


    如果我将文件夹
    C:\Program Files%28x86%29\Microsoft SDK\Windows\v7.1A\Include
    放在
    $(IncludePath)
    之前,我将收到此错误。

    我也有同样的问题。这个把戏对我有用。当VisualStudio无法正确加载开发环境时,就会出现此问题。无法加载环境变量。所以我试过这个,效果很好

    步骤#1

    正在使用的visual studio的启动命令提示符

    第2步 运行此命令

    devenv /useenv
    

    此命令将打开visual studio,然后打开您的项目并进行编译。

    我使用分支预处理器/预处理器定义的C/C++部分中的\u V110\u SDK71\u复制\u,并且一旦取消选中从父级继承。。。并生成项目,然后重新检查此选项并解决问题

    如果在项目属性页中自定义了C/C++和资源预处理器定义,请确保它们以;%结尾(预定义)。这导致从VS2005迁移到VS2010,现在又迁移到VS2015的项目出现了一个未定义的_(使用_V110_SDK71_)符号的问题——x86/x64调试配置缺少此符号,但发行版配置没有此符号。“从父级或项目默认值继承”复选框控件,如果“;%(预处理定义)”是否存在。如果手动添加/删除此项,您将发现复选框更改。勾选复选框比记住“%”(预处理定义)”:)更容易。啊,是的,我明白了。您必须从“预处理器定义”的下拉列表中选择“编辑”才能看到它。我以为您指的是下拉列表中的“”项,它删除了自定义设置。我没有钻得足够深和足够肯定,选中/取消选中框会导致;%(预处理定义)要添加和删除的。
    devenv /useenv