1

おそらく非常に単純な問題ですが、それは私を困惑させました。

Windowsでコンパイル(gcc / g ++)して正常にリンクするSDL / OpenGL/GLEWベースの静的ライブラリがあります。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にあります

私が行方不明になっているのは明らかですか?

4

1 に答える 1

-2

しないでください。1はセットアップが簡単で、2は箱から出してすぐに機能し、3はライセンスにほとんどまたはまったく負担がないものについては、glLoadGenを使用します

于 2017-12-25T23:42:27.003 に答える