Mac OS X, OpenGL und GLUT

dein code hat doch nichts mit dem compiler zu tun, zumindest nicht zwingend ...
es wird definitiv mit gcc und entsprechenden make-files für beide systeme gehen!
 
Am Code ändert das nichts, das ist klar.

Das compilieren macht schon einen Unterschied. Solange der Prof ein VS 6.0 Projekt als Abgabe bekommt ist alles in Ordnung, alles andere wird dann schon wieder schwer. :)
 
@Katana
Über die CPU ist schlecht. Auch Linux kann auf einem PowerPC laufen... :)
Die CPU brauchst du nur, wenn du das Problem BigEndian<->LittleEndian bekommst.


@Agmemon

Hmm.

gcc uebung4.cpp -o uebung4.cpp -framework GLUT -framework OpenGL -Wl,/usr/lib/libobjc.A.dylib

Eine auffühbare Datei genauso benennen wie die CPP-Datei? Geht das überhaupt? Ich denke mal nicht. Ansonsten mal alle Dateien löschen bis auf deinen Quellcode und dann noch mal probieren.

Aber wie gesagt. Leichter wäre es, wenn du XCode benutzt. Dann macht der die ganze Linkerarbeit für dich.
 
Zuletzt bearbeitet:
Die Ausgabedatei stimt so natürlich nicht (Tippfehler).

Aber die ___gxx_personality_v0 Meldung kommt immer noch
 
Ist es vielleicht möglich, das du den Quellcode mal zeigst?

Weil dann könnte ich es heute Nachmittag ausprobieren. Ich hatte so einen Fehler auch schon mal. Aber der ist von selbst verschwunden...
 
Code:
#include <GLUT/glut.h>

void myinit(void) {

	// Farben setzen 
      glClearColor(1.0, 1.0, 1.0, 1.0); /* Weisser Hintergrund */
      glColor3f(0.0, 1.0, 0.0); /* in Gr¸n zeichnen */

	// Kameramodell
        // 500 x 500 2D Fenster mit Ursprung links unten

      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      gluOrtho2D(0.0, 500.0, 0.0, 500.0);
      glMatrixMode(GL_MODELVIEW);
}

void display( void ) {

   // Funktion, die in das Fenster zeichnet
   // einfacher Punkt-Typ

  typedef GLfloat point2[2];     

   // Definition einiger Punkte

      point2 vertices[3]={{10.0,10.0},{230.0,400.0},{400.0,40.0}}; 

   // Fenster lˆschen

  glClear(GL_COLOR_BUFFER_BIT);  

   // Zeichnen

  glBegin(GL_LINE_LOOP);
   glVertex2fv(vertices[0]);
   glVertex2fv(vertices[1]);
   glVertex2fv(vertices[2]);
    glEnd();

   // Puffer leeren
      glFlush(); 
 }

int main(int argc, char** argv) {

// Standard GLUT Initialisierung 
    glutInit(&argc,argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // Default
    glutInitWindowSize(500,500); // 500 x 500 Pixel Fenster
    glutInitWindowPosition(0,0); // Position des Fensters im Bildschirm
    glutCreateWindow("GDV ist toll!"); // Titel des Fensters
    glutDisplayFunc(display); // setzen des Callbacks auf die display Funktion

    myinit(); // OpenGL Zustand initialisieren

    glutMainLoop(); // Endlosschleife
    
    return 1;
}
 
Hmm,

irgendwie sieht der Quellcode komisch aus. Aber das sollte nichts mit dem Linker-Fehler zu tun haben. Naja. Ich probiere es dann so gegen 17Uhr aus. Dann bin ich zu Hause.
 
Danke Nuke, das wäre echt super von Dir.

Der Code stammt von meinem Prof. bzw. seinem Assistenten. Daher sollte er eigentlich laufen.
 
ich bin ja nicht wirklich der cpp experte schlechthin aber schaut euch mal folgendes an

Code:
madman:~/Desktop/tmp madman$  gcc code.cpp -o binary -Wall -framework GLUT -framework OpenGL -Wl,/usr/lib/libobjc.A.dylib
ld: Undefined symbols:
___gxx_personality_v0

gibt mir den gleichen fehler zurück

madman:~/Desktop/tmp madman$  g++ code.cpp -o binary -Wall -framework GLUT -framework OpenGL -Wl,/usr/lib/libobjc.A.dylib
madman:~/Desktop/tmp madman$
 funktioniert bestens ...

gibt dann ein weißes fenster mit einem grünen dreieck und gdv ist toll! als titel...

hth
madman
 
Danke madman!

Jetzt würde mich natürlich mal interessieren, was g++ anders macht, als gcc?

Nicht das was gegen g++ spricht, mich würde dennoch mal der Unterschied interessieren. *grübel*
 
gcc ist der C-Compiler, g++ ist der C++-Compiler.

Da du aber keinen C++-Code benutzt, wundert mich das ein bisschen. Oder liegt es am .cpp der Datei? Naja. Vielleicht geht es ja, wenn du die Dateiendung in .c umbenennst...

Aber egal. Jetzt läuft es ja.

P.S.:

Der Code ist trotzdem sehr "naja". ;) Je nachdem, um was es in der Übung ging. *ggg*
 
-Nuke- schrieb:
gcc ist der C-Compiler, g++ ist der C++-Compiler.

Da du aber keinen C++-Code benutzt, wundert mich das ein bisschen. Oder liegt es am .cpp der Datei? Naja. Vielleicht geht es ja, wenn du die Dateiendung in .c umbenennst...

stimmt ... rtfm sag ich da mal ... immer wieder erzähl ich das und dann halt ich mich selber ned dran :) najo wieder was dazugelernt :rolleyes:

Code:
madman:~/Desktop/tmp madman$ rm binary
madman:~/Desktop/tmp madman$ mv code.cpp code.c
madman:~/Desktop/tmp madman$  gcc code.c -o binary -Wall -framework GLUT -framework OpenGL -Wl,/usr/lib/libobjc.A.dylib
madman:~/Desktop/tmp madman$ file binary
binary: Mach-O executable ppc
madman:~/Desktop/tmp madman$
 
Die Reaktion auf die "Dateiendung" wundert mich auch ein wenig, habe das ganze aber mal ala Frage an die Sysadmins in der FH geschickt. Die wissen sowas :)

Über die Qualität des Codes kann ich noch nichts sagen. ich muß mir die OpenGL Geschichte erstmal ansehen. Mir war wichtig, das er es unter OS X kompiliert und ich es ohne Problem auch mit VS compilieren kann, da ich bis nächste Woche ein kleines Programm mit OpenGL schreiben muss/darf:

Mit der Maus vier beliebige Punkte auf der Zeichnungsfläche wählen und mit diesen Stützpunkten eine Bezier-Kurve zeichnen lassen. mal sehen, was das wird?
 
Zurück
Oben Unten