2016-11-19 21 views
0

私はLLVMのバージョン8.0.0を搭載したMac OSXシエラ10.12.1上のOpenGL/GLUTの問題

cc -std=c99 main.c -framework OpenGL -framework GLUT -framework Cocoa 

(clang-と

#include <stdlib.h> 
#include <GLUT/glut.h> 
int main(int argc, char* argv[]) { 
    glGetError(); 
    exit(1); 
} 

このプログラムをコンパイルしようとしているとき

* thread #1: tid = 0xc0a7d, 0x00007fffd7ecea07 libGL.dylib`glGetError + 13, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) 
frame #0: 0x00007fffd7ecea07 libGL.dylib`glGetError + 13 

私は完全にここで何が起こっているかのよう迷ってしまいました:800.0.42.1)、私は、セグメンテーションフォールトを取得します。私はそれがある種のリンク問題であると仮定することしかできません。私は以前のSierraマシンにアクセスすることはできませんが、以前はこの問題に遭遇していなかったため、Sierraで何かが変更されているはずです。

答えて

2

OpenGLコンテキストを作成したり、最新のものにしたりしていません。 glGetError()はスレッドの現在のコンテキストを参照しており、そのコンテキストに適した「実際の」実装を呼び出すために内部の関数テーブルに索引付けしています。ルックアップはヌルコンテキストアドレスを取得するため、関数テーブルへのアクセスにアクセス違反が発生します。

+0

他にもSOがあると判断すると、コンテキストのないglGetErrorの動作はプラットフォームに依存する(または定義されていない)可能性があります。しかし、私はあなたが正しいと思う、これは正しい答えです。 – hanno

関連する問題