3

当我构建一个项目(使用 VS2012)时,我多次得到以下输出:

 warning C4995: 'DwmEnableComposition': name was marked as #pragma deprecated

当我将项目源文件复制到另一个项目(和不同的解决方案)时,我得到错误而不是警告(并且构建不成功):

error C4995: 'DwmEnableComposition': name was marked as #pragma deprecated

我能做些什么来得到警告而不是错误?

那是我正在运行的项目(它不是我自己的代码): http: //federico-mammano.github.io/Oculus-SDK-0.4.4-beta-OpenGL-Demo/(OpenGL 示例)

4

3 回答 3

3

您可能为出现错误的项目启用了“SDL 检查”(在 C/C++ -> 常规下)。这是“新项目”向导中的一个选项。删除它,它将恢复为警告。

于 2015-10-19T06:00:55.823 回答
2

问题是DwmEnableComposition功能。自 Windows 8 起已弃用。

当编译器遇到像这种情况下不推荐使用的符号时,它会发出 C4995。

更多信息:

DwmEnableComposition 函数

编译器警告(3 级)C4995

于 2015-01-17T16:42:12.807 回答
1

我刚刚在一个现有项目中确认了这种行为,我今天决定在我的一个 C++ 库的单元测试程序中启用 SDL 检查。标记的功能是我自己标记为已弃用的功能之一,但它本身与安全性无关。所以,我说这引出了问题;为什么编译器将其视为错误,当我每隔一次使用 SDL 检查将此类用途标记为swprintf时,C4995是一个警告

于 2016-08-03T01:33:51.907 回答