Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在MacOSX.framework中包含GLEW的正确方法是什么?_C++_Macos_Gcc_Sdl_Glew - Fatal编程技术网

C++ 在MacOSX.framework中包含GLEW的正确方法是什么?

C++ 在MacOSX.framework中包含GLEW的正确方法是什么?,c++,macos,gcc,sdl,glew,C++,Macos,Gcc,Sdl,Glew,可能是一个非常简单的问题,但它让我难倒了 我有一个基于SDL/OpenGL/GLEW的静态库,可以在Windows上编译(gcc/g++)和链接。在OSX上,同一个代码库未能编译,声称找不到GL_NUM_EXTENSIONS和::glGetStringi()的声明,这是因为我在混合中加入了GLEW(只有SDL和OpenGL,它在OSX上也能很好地构建) //globals.h #包括 #包括 //图形.h #包括“globals.h” bool HasGLExtension(const char

可能是一个非常简单的问题,但它让我难倒了

我有一个基于SDL/OpenGL/GLEW的静态库,可以在Windows上编译(gcc/g++)和链接。在OSX上,同一个代码库未能编译,声称找不到GL_NUM_EXTENSIONS和::glGetStringi()的声明,这是因为我在混合中加入了GLEW(只有SDL和OpenGL,它在OSX上也能很好地构建)

//globals.h
#包括
#包括
//图形.h
#包括“globals.h”
bool HasGLExtension(const char*pName);
//graphics.cpp
#包括
#包括“graphics.cpp”
布尔HasGLExtension(常量字符*pName)
{
闪烁的numExtensions;
::glGetIntegerv(GL_NUM_扩展名和numExtensions);//错误
对于(int i=0;i
  • 作为框架构建的依赖库位于/Library/frameworks
  • 使用了-DGLEW_STATIC-DSDL_NO_GLEXT编译标志(在Windows上根据需要-即使删除它们,问题仍然存在)
  • 即使自动完成也会确认glew.h的位置存在(当然,这不是我得到的错误,而是符号)
  • 包含SDL/SDL_opengl.h只会导致声明冲突
  • glew.h中存在问题的定义

我错过了什么?不要这样做。对于1,易于设置,2,开箱即用,3,在授权方面几乎没有障碍的东西,请使用。

如果您包括
,为什么不使用
std::string
?为什么不引用编译器给出的错误?此外,为什么要使用命名空间范围<代码>:GLGETSTRIGIGI/<代码> GLW C函数?@ Brett Hale:项目本身是C++库,我习惯于指示属于全局命名空间的东西。@ DAKNOKKYT:Hulf>这样做的缺点。openGL使用c字符串,由于我没有以编程方式复制、修改、创建字符串等等,所以我很乐意这样做。尽管这不是性能敏感的代码(不会在我的游戏循环中检查扩展…),但我更喜欢只在指针足够的地方复制指针,这也意味着不调用可能会或可能不会执行模糊操作的构造函数,例如分配内存。@iCE-9-那么编译器给出的错误是什么呢?-1er是否愿意解释他们遇到的问题,并可能提出改进建议?
// 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;
}