OpenGL funktioniert nicht (Illegal Instruction)

H

hoppeSP

Aktives Mitglied
Thread Starter
Dabei seit
27.05.2005
Beiträge
351
Reaktionspunkte
3
Hallo,

da wir im Studium gerade ein wenig OpenGL machen, wollte ich meinem Macbook (OSX 10.5, Intel GMA950) auch ein wenig davon beibringen. Ich habe im Internet die Tutorials von Nehe gefunden, jedoch funktionieren diese nicht.

Wenn ich das Tutorial befolge und die Dinge unter XCode anlege, so habe ich bereits bei den kleinsten Beispielen etliche Fehler und ich kann den Code nicht kompilieren.

Code:
#ifdef __APPLE__
#include <OpenGL/gl.h>        // Header File For The OpenGL32 Library
#include <OpenGL/glu.h>        // Header File For The GLu32 Library
#include <GLUT/glut.h>        // Header File For The GLut Library
#else
#include <GL/glut.h>
#endif

#define kWindowWidth    400
#define kWindowHeight    300

GLvoid InitGL(GLvoid);
GLvoid DrawGLScene(GLvoid);
GLvoid ReSizeGLScene(int Width, int Height);

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize (kWindowWidth, kWindowHeight);
    glutInitWindowPosition (100, 100);
    glutCreateWindow (argv[0]);

    InitGL();

    glutDisplayFunc(DrawGLScene);
    glutReshapeFunc(ReSizeGLScene);

    glutMainLoop();

    return 0;
}

Wenn ich ein einfaches Beispiel einfach so im Terminal kompiliere mit gcc, so kompiliert er das Programm wunderbar. Nur bei der Ausführung erhalte ich dann die Fehlermeldung "Illegal Instruction".

Es wäre toll, wenn mir jemand weiterhelfen könnte!


EDIT (Fehlermeldungen in XCode)

Code:
Building target “HelloWorld” of project “HelloWorld” with configuration “Release” — (22 errors)
        cd /Users/hoppe/HelloWorld
    /Developer/usr/bin/gcc-4.0 -o /Users/hoppe/HelloWorld/build/HelloWorld.build/Release/HelloWorld.build/Objects-normal/i386/HelloWorld -L/Users/hoppe/HelloWorld/build/Release -F/Users/hoppe/HelloWorld/build/Release -filelist /Users/hoppe/HelloWorld/build/HelloWorld.build/Release/HelloWorld.build/Objects-normal/i386/HelloWorld.LinkFileList -framework Cocoa -framework OpenGL -arch i386 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
Undefined symbols:
  "_glutDisplayFunc", referenced from:
      _main in main.o
  "_DrawGLScene", referenced from:
      _DrawGLScene$non_lazy_ptr in main.o
  "_glutMainLoop", referenced from:
      _main in main.o
  "_glutInitDisplayMode", referenced from:
      _main in main.o
  "_glutReshapeFunc", referenced from:
      _main in main.o
  "_InitGL", referenced from:
      _main in main.o
  "_glutInit", referenced from:
      _main in main.o
  "_ReSizeGLScene", referenced from:
      _ReSizeGLScene$non_lazy_ptr in main.o
  "_glutInitWindowPosition", referenced from:
      _main in main.o
  "_glutCreateWindow", referenced from:
      _main in main.o
  "_glutInitWindowSize", referenced from:
      _main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
          "_glutDisplayFunc", referenced from:
              _main in main.o
          "_DrawGLScene", referenced from:
              _DrawGLScene$non_lazy_ptr in main.o
          "_glutMainLoop", referenced from:
              _main in main.o
          "_glutInitDisplayMode", referenced from:
              _main in main.o
          "_glutReshapeFunc", referenced from:
              _main in main.o
          "_InitGL", referenced from:
              _main in main.o
          "_glutInit", referenced from:
              _main in main.o
          "_ReSizeGLScene", referenced from:
              _ReSizeGLScene$non_lazy_ptr in main.o
          "_glutInitWindowPosition", referenced from:
              _main in main.o
          "_glutCreateWindow", referenced from:
              _main in main.o
          "_glutInitWindowSize", referenced from:
              _main in main.o
        ld: symbol(s) not found
        collect2: ld returned 1 exit status
        cd /Users/hoppe/HelloWorld
    /Developer/usr/bin/gcc-4.0 -o /Users/hoppe/HelloWorld/build/HelloWorld.build/Release/HelloWorld.build/Objects-normal/ppc/HelloWorld -L/Users/hoppe/HelloWorld/build/Release -F/Users/hoppe/HelloWorld/build/Release -filelist /Users/hoppe/HelloWorld/build/HelloWorld.build/Release/HelloWorld.build/Objects-normal/ppc/HelloWorld.LinkFileList -framework Cocoa -framework OpenGL -arch ppc -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
Undefined symbols:
  "_glutDisplayFunc", referenced from:
      _main in main.o
  "_DrawGLScene", referenced from:
      _DrawGLScene$non_lazy_ptr in main.o
  "_glutMainLoop", referenced from:
      _main in main.o
  "_glutInitDisplayMode", referenced from:
      _main in main.o
  "_glutReshapeFunc", referenced from:
      _main in main.o
  "_InitGL", referenced from:
      _main in main.o
  "_glutInit", referenced from:
      _main in main.o
  "_ReSizeGLScene", referenced from:
      _ReSizeGLScene$non_lazy_ptr in main.o
  "_glutInitWindowPosition", referenced from:
      _main in main.o
  "_glutCreateWindow", referenced from:
      _main in main.o
  "_glutInitWindowSize", referenced from:
      _main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
          "_glutDisplayFunc", referenced from:
              _main in main.o
          "_DrawGLScene", referenced from:
              _DrawGLScene$non_lazy_ptr in main.o
          "_glutMainLoop", referenced from:
              _main in main.o
          "_glutInitDisplayMode", referenced from:
              _main in main.o
          "_glutReshapeFunc", referenced from:
              _main in main.o
          "_InitGL", referenced from:
              _main in main.o
          "_glutInit", referenced from:
              _main in main.o
          "_ReSizeGLScene", referenced from:
              _ReSizeGLScene$non_lazy_ptr in main.o
          "_glutInitWindowPosition", referenced from:
              _main in main.o
          "_glutCreateWindow", referenced from:
              _main in main.o
          "_glutInitWindowSize", referenced from:
              _main in main.o
        ld: symbol(s) not found
        collect2: ld returned 1 exit status
Build failed (22 errors)
 
Hallo,

ich habe es jetzt zumindest mit XCode hinbekommen. Man muss nicht nur das OpenGL.Framework dem Cocoa-Projekt hinzufügen, sondern auch das GLUT.Framework.

Im Terminal geht es weiterhin nicht. Liegt also vermutlich dort an den fehlenden Bibliotheken. Nur komisch, dass er kompiliert.
 
du musst im terminal auch die frameworks mitgeben...
dann kompiliert der schon besser ;)

allerdings wo kommen denn die
GLvoid InitGL(GLvoid);
GLvoid DrawGLScene(GLvoid);
GLvoid ReSizeGLScene(int Width, int Height);
her?

hast du die selber implementiert?
wenn man mal google bemüht, findet man den hinweis, man muss die selbst implementieren...
 
versuchs mal mit

Code:
-framework OpenGL -framework GLUT

und alles ist ok. :)
 
Zurück
Oben Unten