2012-06-30 6 views
5

私は実行可能ファイルを作成しようとすると、このエラーを取得するには、コードは、私は、このエラーメッセージが表示されます正しく、まだコンパイル未定義の参照、私はmakeコマンドを打ったときのOpenGL

GL_INCLUDE = /usr/X11R6/include 
GL_LIB = /usr/X11R6/lib 
GL_GLEW = /user/include 

helloworld: helloworld.o 
    gcc -o hello-gl $^ -L$(GL_LIB) -lGL -lglut -lGLEW -lm 

.c.o: 
    gcc -c -o [email protected] $< -I$(GL_INCLUDE) 

clean: 
    rm -f hello-gl hello-gl-dummy hello-gl.o util.o hello-gl-dummy.o 

マイコード:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <GL/glew.h> 
#include <GL/freeglut.h> 
#define WINDOW_TITLE_PREFIX "Hello, World!" 

int CurrentWidth = 600, 
    CurrentHeight = 400, 
    WindowHandle = 0; 

void Initialize(int, char*[]); 
void InitWindow(int, char*[]); 
void ResizeFunction(int, int); 
void RenderFunction(void); 

int main(int argc, char* argv[]) 
{ 
    Initialize(argc, argv); 

    glutMainLoop(); 

    exit(EXIT_SUCCESS); 
     return 0; 
} 

void Initialize(int argc, char* argv[]) 
{ 
    GLenum GlewInitResult; 
    InitWindow(argc, argv); 
     GlewInitResult = GlewInit(); 
     if (GLEW_OK != GlewInitResult) { 
      fprintf(stderr, "ERROR: %s\n", glewGetErrorString(GlewInitResult)); 
      exit(EXIT_FAILURE); 
     } 

    fprintf(
     stdout, 
     "INFO: OpenGL Version: %s\n", 
     glGetString(GL_VERSION) 
    ); 

    glClearColor(0.2f, 1.0f, 0.8f, 0.3f); 
} 

void InitWindow(int argc, char* argv[]) 
{ 
    glutInit(&argc, argv); 

    glutInitContextVersion(4, 0); 
    glutInitContextFlags(GLUT_FORWARD_COMPATIBLE); 
    glutInitContextProfile(GLUT_CORE_PROFILE); 

    glutSetOption(
     GLUT_ACTION_ON_WINDOW_CLOSE, 
     GLUT_ACTION_GLUTMAINLOOP_RETURNS 
    ); 

    glutInitWindowSize(CurrentWidth, CurrentHeight); 

    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); 

     char *states[] = {"Hello", "My", "Name", "Is", "Lewis"}; 

    WindowHandle = glutCreateWindow(WINDOW_TITLE_PREFIX); 

    if(WindowHandle < 1) { 
     fprintf(
      stderr, 
      "KERN_ERROR: Could not create a new rendering window.\n" 
     ); 
     exit(EXIT_FAILURE); 
    } 

    glutReshapeFunc(ResizeFunction); 
    glutDisplayFunc(RenderFunction); 
} 

void ResizeFunction(int Width, int Height) 

    { 
     /*captures the resize data from the OS and assigns it to the global 
     variable CURRENT_WIDTH & CURRENT_HEIGHT */ 

    CurrentWidth = Width; 
    CurrentHeight = Height; 
    glViewport(0, 0, CurrentWidth, CurrentHeight); 
} 

void RenderFunction(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    /*the next line takes the data from the back-buffer to the screen */ 

    glutSwapBuffers(); 
    glutPostRedisplay(); 
} 
012 Linuxのミント13を実行していると私はそれが私のメイクファイルとは何かだと思う、私はので、私は一緒に1をハッキングし、いくつかのコードをオンラインで見つけ、それらについてはあまり知りません
+2

+1:gcc -o hello-gl helloworld.o -L/usr/X11R6/lib -lGL -lglut -lGLEW -lmそれは私を助けました:) – rendon

+0

@DDCメイクファイルがあなたを助けてくれてうれしい:) – TheBlueCat

答えて

4

GLEW関数の名前は、 'glew'ではなく 'glew'から始める必要があります。

だからそれがある

GlewInitResult = glewInit(); 

Cは大文字と小文字が区別され、すべてのOpenGL関連のLIBSは通常小文字で関数の名前を開始します。

+0

ありがとう!私はタイプミスをしたに違いない。 – TheBlueCat