VS2013在win7 glx.h上运行时出错

时间:2014-11-19 06:16:05

标签: c++ opengl visual-studio-2013 shader

我正在尝试学习如何在OpenGL中编写着色器代码。我安装了所有必要的组件,如GLUT,并将GLee.h添加到我的项目中。但是,我在Visual Studio 2013中收到错误,指出无法找到文件glx.h。这是GLee.h代码中的位置:

#ifdef WIN32
    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
    #include <GL/gl.h>
#elif defined(__APPLE__) || defined(__APPLE_CC__)
    #define GL_GLEXT_LEGACY
    #include <OpenGL/gl.h>
#else // GLX
    #define __glext_h_  /* prevent glext.h from being included  */
    #define __glxext_h_ /* prevent glxext.h from being included */
    #define GLX_GLXEXT_PROTOTYPES
    #include <GL/gl.h>
    #include <GL/glx.h>
#endif

我不明白为什么最后一行显示为自从我运行win7以来需要首先包含的内容。即使我的操作系统是64位Visual Studio 2013版本是32位,所以VS2013应该识别#ifdef WIN32并运行该代码是有道理的,但事实并非如此。我尝试下载要求的文件,但后来VS2013只是要求更多,在几个文件后我放弃了该策略。我尝试谷歌搜索这个答案,找不到任何解决这个奇怪问题的东西,因为如果它是VS2013的问题,我会认为这是常见的事情。任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

第一行是错误的。

只需在WIN32中添加一个下划线,如下所示:

#ifdef _WIN32 
编辑:在旁注中,我建议使用GLEW而不是GLee。这些天GLee似乎没有积极更新,并且(根据他们的SourceForge页面),只支持OpenGL 3.0。而GLFW定期更新,并支持OpenGL 4.5以外的所有内容。

答案 1 :(得分:0)

显然,Visual Studio定义_WIN32但不定义WIN32。 MinGW定义了WIN32_WIN32。如果所有其他方法都失败了,您可以定义WIN32。有关详细信息,请参阅this question