2011-08-07 11 views
0

Eclipse 3.6.2、現在のバージョンのCDT、現在のCygwinツールとC++(GCC)コンパイラを使用します。 -lglu32、-lglut32、-lopengl32をリンクする。WindowsでEclipseのOpenGL、リンクエラーでセットアップのヘルプ?

私はこの環境をOpenGL開発用に設定しようとしています。私が解決できなかったリンクエラーに走っています。現在、関連するOpenGLとGLUT LIBSとヘッダのバージョンCにコピーされています:\ cygwinの\ libとC:これはコンパイルとリンクしながら、\ cygwinの\ USR \たとえば\ w32api

を含める..

#include <windows.h> 

#include <GLES2/gl2.h> 

#include <EGL/egl.h> 

#include <GL/glut.h> 

[...] 

void display() { 

    glClear(GL_COLOR_BUFFER_BIT); /* Clear the screen with the clear color */ 

glBegin(GL_TRIANGLES); 
    glVertex3f(-0.5,-0.5,0.0); 
    glVertex3f(0.5,0.0,0.0); 
    glVertex3f(0.0,0.5,0.0); 
glEnd(); 

glutSwapBuffers(); 

}

glVertextAttribPointer、glEnableVertexAttribArray、およびglDisableVertexAttribArrayで未定義の参照エラーがスローされます。

void display() { 

glClear(GL_COLOR_BUFFER_BIT); /* Clear the screen with the clear color */ 

    // map the border vertices 
glVertexAttribPointer(crosshairVertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &crossVertices[0]); 
glEnableVertexAttribArray(crosshairVertexHandle); 


glLineWidth(2.0f); 
glDrawArrays(GL_LINES, 0, 4); 
glDisableVertexAttribArray(crosshairVertexHandle); 

glutSwapBuffers(); /* Double buffering */ 

}

ここでエラーがあります..プロジェクトogl_testsのコンフィギュレーションのデバッグの

ビルドが**

make all 
Building file: ../src/ogl_tests.cpp 
Invoking: Cygwin C++ Compiler 
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/ogl_tests.d" -MT"src/ogl_tests.d" -o"src/ogl_tests.o" "../src/ogl_tests.cpp" 

Finished building: ../src/ogl_tests.cpp 

Building target: ogl_tests.exe 
Invoking: Cygwin C++ Linker 
g++ -o"ogl_tests.exe" ./src/ogl_tests.o -lglu32 -lglut32 -lopengl32 
./src/ogl_tests.o: In function `_Z7displayv': 
/cygdrive/c/Users/David/workspace/ogl_tests/Debug/../src/ogl_tests.cpp:61: undefined reference to `[email protected]' 
/cygdrive/c/Users/David/workspace/ogl_tests/Debug/../src/ogl_tests.cpp:62: undefined reference to `[email protected]' 
/cygdrive/c/Users/David/workspace/ogl_tests/Debug/../src/ogl_tests.cpp:67: undefined reference to `[email protected]' 
collect2: ld returned 1 exit status 
make: *** [ogl_tests.exe] Error 1 

任意のアイデア?私が使っているCygwinのパスは正しいですか?

+0

これはVista 64システムであることを忘れてしまった。 – olo

答えて

1

@Nicolボーラはあなたに私はあなたに他を与えるパズルの1 PICEを与えた:あなたは、OpenGL-1.1、まださえOpenGLの-1.4の機能を超えたOpenGLの機能を使用しています。 Windowsでは、そのバージョンを超えるOpenGL機能は、の拡張機能メカニズムを介して取得する必要があります。

これを行う最も簡単な方法は、GLEWまたはGLEEのような拡張ラッパーを使用することです。コンテキスト作成直後にGLEWをglewInit()で初期化する必要があります。 GLEEは、初期化なしで使用することができます(拡張関数の最初の呼び出し時に暗黙的に行われます)。

+0

Aha!ありがとう&ニコル問題が解決しました。GLEEはそのトリックをやった。私は、OpenGLの後のバージョンの機能がこのように拡張機能として扱われていることに気づいていませんでした。 – olo

1

OpenGLはではない OpenGL ESです。これらは2つの全く異なるものです(表面は似ていますが)。 Vista 64を使用している場合は、機能しているOpenGL ES実装のシステムでは動作していない可能性があります。

デスクトップウィンドウにOpenGL ESコンテキストを作成できるOpenGL拡張があります。しかし、まだ広く実装されておらず、あなたのコードでそれを使用していません。ああ、GLUTはOpenGL ESを使うことができません。

EGLは、特にWindowsでは広く利用できません。 Windows上にEGL実装を記述する際に何らかのノイズが発生しましたが、何も起こっていません。

したがって、ヘッダーの2つは意味をなさない。 OpenGL ESではなく、OpenGLのものを含める必要があります。

+0

私はES実装を含むこのシステム上でJNI作業のために設定されたAndroidビルド環境を持っています。私がそれらを使用した理由は、#include は同じ関数で '宣言されていません'というエラーになります.. '../src/ogl_tests.cpp:関数 'void display()': ../src /ogl_tests.cpp:62:エラー: 'glVertexAttribPointer 'は宣言されていません(最初にこの関数を使用)... – olo

関連する問題