【问题标题】:D_WIN32_WINNT compiler warning with BoostBoost 的 D_WIN32_WINNT 编译器警告
【发布时间】:2011-03-01 07:46:26
【问题描述】:

不确定如何处理此错误。在项目属性下的 Visual Studio 的“命令行”选项中添加了-D_WIN32_WINNT=0x0501,但它说它无法识别它并且仍然出现警告。

我也不确定如何添加预处理器定义。

1>请定义 _WIN32_WINNT 或 _WIN32_WINDOWS 适当。例如:
1>- 添加-D_WIN32_WINNT=0x0501 到编译器命令行;或
1>- 将 _WIN32_WINNT=0x0501 添加到您的 项目的预处理器定义。

【问题讨论】:

    标签: c++ boost boost-preprocessor


    【解决方案1】:

    在您的顶级源代码中添加以下行。

    #include <SDKDDKVer.h>
    

    【讨论】:

    • 这会起作用,但是如果在构建属性中可以编辑它时,如果有一个包含语句而不是真正的功能,而只是摆脱编译器警告,这会是一种代码味道吗?只是一个想法。我目前正在使用这个作为答案,正在开发一个琐碎的项目。
    • 使用实际 SDK 中的实际版本似乎是正确的方法,而不是几乎随机选择一些目标。
    • 这似乎确实是正确的解决方法。
    【解决方案2】:

    我认为你真的很接近让它发挥作用。 John Dibling 提供了三种方法可以做到这一点,看起来您尝试了第三种解决方案,即“进入项目设置......并在 Configuration Properties->C/C++->PreProcessor 标题,添加;_WIN32_WINNT = 0x0501"。您回复说您仍然收到该错误并提供了预处理器设置的内容WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT = 0x0501。我认为如果将_WIN32_WINNT = 0x0501 更改为_WIN32_WINNT=0x0501,您可以解决此问题。当我尝试使用空格的版本时,它并没有消除错误,但删除了空格。

    【讨论】:

    • 手动定义这些编译定义是个坏主意。见希尔的回答。
    【解决方案3】:

    几个选项。

    1) 如果你有一个主头文件,比如 stdafx.h,你可以添加这个:

    #define _WIN32_WINNT 0x0501
    

    或者你可以在任何你需要的地方添加它。

    2) 可以加-D _WIN32_WINNT=0x0501(注意空格)

    3) 转到项目属性> 配置属性> C/C++ > 处理器。将;_WIN32_WINNT=0x0501 添加到预处理器定义。

    就我个人而言,我选择 #3 是因为毫无疑问它是在正确的时间在正确的翻译单元中定义的,而且我宁愿将所有的 #defines 放在一个地方,而不是将一些 #defines 放在 Preprocessor Defines 中 以及高级标签中的其他内容。

    【讨论】:

    • 下面是我#3 中的内容的精确粘贴)。仍然收到该错误。 :( WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT = 0x0501
    • 和@bobber205:在选项 #3 中,不要在预处理器定义行中的等号周围放置空格
    • 只是一个小错字:#define _WIN32_WINNT = 0x0501 不正确,删除“=”符号。这是正确的:#define _WIN32_WINNT 0x0501
    • @Dredok:谢谢,已编辑。顺便说一句,您可以随意进行此类编辑。
    • 我找到了一个可能也适合您的解决方案,将其添加到您的 API 项目中:#include //允许模块中的 Boost 编译选择正确的编译目标
    【解决方案4】:

    在 D 后面加一个空格

    【讨论】:

      【解决方案5】:

      对于代码块,这里是你的做法。

      右击**Project Name** on your left &gt;&gt; Click 'Build Options' &gt;&gt; Select Debug or Release on your left &gt;&gt; Select 'Compiler Settings' Tab on the right &gt;&gt; Select #defines tab &gt;&gt; 然后按原样添加以下行:

      _WIN32_WINNT=0x0501
      
      >> Click Ok >> Close >> Right click **Project Name** again >> Re-build.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多