C2086:'int WINGDIAPI':Open Scene Graph中的重新定义错误?

问题描述 投票:5回答:5

我已经解决了这个问题(来自here)。只需将其放在此处,以便其他任何遇到错误的人都可以找到更干净的问题和答案,而不必深入研究我从中获得错误的网站。我很快就会自己回答这个问题。

遇到的错误是:

Error 13 error C2086: 'int APIENTRY' : redefinition C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL\gl.h 1153  
Error 10 error C2086: 'int WINGDIAPI' : redefinition C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL\gl.h 1153   
Error 3 error C2144: syntax error : 'void' should be preceded by ';' C:\Program Files\Microsoft Visual Studio 10\VC\include\GL\gl.h 1152 
visual-studio-2010 build openscenegraph
5个回答
8
投票

解决方案是:[从this website] 获得

您需要将WIN32添加到项目中的定义中。在Visual Studio中,右键单击您的项目,转到C / C ++,“预处理器”,然后在“预处理器定义”字段中添加WIN32,以进行调试和发布配置。在使用它时,还要为调试配置添加_DEBUG,为发布配置添加NDEBUG。由于某种原因,默认的VS项目没有预处理器定义,即使至少应几乎始终使用这些定义...


3
投票

我的解决方案已经包含了这些预处理器定义。 MSDN建议您还添加#include <windows.h>


2
投票

我有一段代码在寻找_WIN32,而不是WIN32。

关于它的价值,流行的声音库在包括windows.h之前就使用了它:

#if defined(_WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
#include <windows.h>
#endif

1
投票

我也想添加CMake解决方案。

您应该将/ D“ WIN32”添加到CMAKE_CXX_FLAGS,可以在高级条目中找到。


0
投票

我最近使用Visual C ++ 2019在一个空项目中遇到了这个问题。

对我有用的是将_WINDOWS定义为预处理指令,而不是WIN32。

© www.soinside.com 2019 - 2024. All rights reserved.