在Mac OS X .framework中包含GLEW的正确方法是什么?

时间:2012-04-08 10:39:21

标签: c++ macos gcc sdl glew

可能是一个非常简单的问题,但它让我感到难过。

我有一个基于SDL / OpenGL / GLEW的静态库,可以在Windows上编译(gcc / g ++)和链接。在OS X上,相同的代码库无法编译声称它无法找到GL_NUM_EXTENSIONS和:: glGetStringi()的声明 - 这是因为我已经在混合中抛出GLEW(仅使用SDL和OpenGL,它构建正常OS X也是。)

// globals.h
#include <glew.h>
#include <SDL/SDL.h>

// graphics.h
#include "globals.h"

bool HasGLExtension(const char* pName);

// graphics.cpp
#include <string>
#include "graphics.cpp"

bool HasGLExtension(const char* pName)
{
  GLint numExtensions;
  ::glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions); // error
  for (int i = 0; i < numExtensions; ++i)
  {
    if (strcmp(pName, (char*)::glGetStringi(GL_EXTENSIONS, i)) == 0) // error
    {
      return true;
    }
  }
  return false;
}
  • 构建为框架的依赖库位于/ Library / Frameworks。
  • 使用-DGLEW_STATIC -DSDL_NO_GLEXT编译标志(根据需要在Windows上 - 即使我将其删除,问题仍然存在)。
  • 甚至自动完成确认glew.h的位置存在(当然,这不是我得到的错误 - 它是符号)。
  • 包括SDL / SDL_opengl.h只会导致声明冲突。
  • 有问题的定义出现在glew.h

我失踪的显而易见的是什么?

1 个答案:

答案 0 :(得分:0)

不要这样做。对于1,易于设置的东西和2,开箱即用而且3,在许可中几乎没有任何障碍,使用glLoadGen