2

OpenGL-tutorial.org のすべての指示に従って、2.1 コードをダウンロードし、xcode を指定してデフォルトのコンパイラを使用して cmake で実行しました。赤い線が消えるまで設定してから、生成をクリックしました。ただし、生成されたプロジェクト ファイルを xcode で開くと、次のエラーが表示されます。

 /OpenGL-tutorial_v0010_21/external/AntTweakBar-1.15/src/LoadOGLCore.h:149:24: Conflicting types for 'glMultiDrawElements'

 /OpenGL-tutorial_v0010_21/external/AntTweakBar-1.15/src/LoadOGLCore.h:214:24: Conflicting types for 'glShaderSource'

 /external/AntTweakBar-ObjectiveC/LoadOGLCore.mm:116:1: Cannot initialize a variable of type 'PFNglMultiDrawElements' (aka 'void (*)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)') with an lvalue of type 'void (GLenum, const GLsizei *, GLenum, const GLvoid *const *, GLsizei)': type mismatch at 4th parameter ('const GLvoid **' (aka 'const void **') vs 'const GLvoid *const *' (aka 'const void *const *'))

 /external/AntTweakBar-ObjectiveC/LoadOGLCore.mm:116:1: Cannot initialize a variable of type 'PFNglMultiDrawElements' (aka 'void (*)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)') with an lvalue of type 'void (GLenum, const GLsizei *, GLenum, const GLvoid *const *, GLsizei)': type mismatch at 4th parameter ('const GLvoid **' (aka 'const void **') vs 'const GLvoid *const *' (aka 'const void *const *'))

Xcode 4.6.1 と cmake 2.8-10 を使用しています

これは、cmake またはチュートリアル コードに問題がある可能性がありますか?

4

3 に答える 3

4

最初の 2 つのエラーは簡単に修正できますが、他の 2 つも修正される可能性があります。glShaderSource の gl.h の署名に注意してください。それは:

extern void glShaderSource (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length);

3 番目のパラメーターは、「文字列への const ポインターへの const ポインター」です。

ただし、LoadOGLCore.h のシグネチャは (マクロの展開) であることに注意してください。

extern "C" { void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar * *string, const GLint *length);

3 番目のパラメーターは、「文字列ポインターへの const ポインター」です (「const」がありません)。そのため、LoadOGLCore.h を開いて変更します (214 行目):

const GLchar* *string

に:

const GLchar* const *string

glMultiDrawElements に関する他のエラーについても同じことを行います。これにより、少なくとも OSX 10.8.5 で AntTweakBar をビルドすることができました。まだサンプル プロジェクトを実行していませんが、実行したら更新します。

于 2014-06-06T19:41:13.610 に答える
0

これらの関数の定義に移動し、プロトタイプを正しい (更新) パラメーター定義に置き換えます

于 2013-04-25T19:07:05.907 に答える