Archiv verlassen und diese Seite im Standarddesign anzeigen : Was mache ich falsch???
Tach
Wenn ich folgendes Programm kompillieren will:
#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
void DrawScene(void)
{
//Hintergrundfarbe setzen (dunkles Rot)
glClearColor (0.5, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
// Farbe des 5-Ecks setzen, (blau)
glColor3f(0.0, 0.1, 1.0);
//Polygonzug des 5-Ecks
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f( 0.5, 0.5);
glVertex2f( 0.8, 0.0);
glVertex2f( 0.5, -0.5);
glEnd();
//vorangehende GL-Befehle zeichnen
glFlush();
}
int main(int argc, char *argv[])
{
//GLUT initialisieren, Fenster setzen
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
// Callback-Funktion zum Zeichnen des GL-Objektes setzen
glutDisplayFunc(DrawScene);
// Hauptschleife
glutMainLoop();
return EXIT_SUCCESS;
}
kommt immer folgender Fehler:
main.cpp: In function `int main(int, char**)':
main.cpp:33: error: invalid conversion from `int' to `int*'
Was ist in dem code falsch??? ICh hab schon n bisschen rumprobiert, aber nix hat geklappt!
tuxipuxi
18-05-2003, 09:08
hi,
aus deinem code kann ich nicht sehen, welche zeile 33 ist( wegen deiner leerzeilen ), nehme aber an das du diese zeile meinst:
glutInit(&argc, argv);
hast du es mal ohne & vor dem argc probiert?
Hab ich, dann kommt das gleiche
tuxipuxi
18-05-2003, 09:15
verstehe ich nicht.. also wie du argv uebergibst stimmt es.
versuche mal
initGlut( *argc,argv );
edit: schwachsinnsidee.. duerfte eigentlich nicht klappen :)
anda_skoa
18-05-2003, 12:01
Hmm, der ursprüngliche Code sieht ansich korrekt aus.
Probier mal argc zwischen zu speichern
int main(int argc, char* argv[])
{
int c = argc;
glutInit(&c, argv);
}
Ciao,
_
Dann kommt das:
/tmp/cc4IEmVG.o(.text+0x12): In function `DrawScene()':
: undefined reference to `glClearColor'
/tmp/cc4IEmVG.o(.text+0x22): In function `DrawScene()':
: undefined reference to `glClear'
/tmp/cc4IEmVG.o(.text+0x39): In function `DrawScene()':
: undefined reference to `glColor3f'
/tmp/cc4IEmVG.o(.text+0x46): In function `DrawScene()':
: undefined reference to `glBegin'
/tmp/cc4IEmVG.o(.text+0x5b): In function `DrawScene()':
: undefined reference to `glVertex2f'
/tmp/cc4IEmVG.o(.text+0x70): In function `DrawScene()':
: undefined reference to `glVertex2f'
/tmp/cc4IEmVG.o(.text+0x85): In function `DrawScene()':
: undefined reference to `glVertex2f'
/tmp/cc4IEmVG.o(.text+0x97): In function `DrawScene()':
: undefined reference to `glVertex2f'
/tmp/cc4IEmVG.o(.text+0xac): In function `DrawScene()':
: undefined reference to `glVertex2f'
/tmp/cc4IEmVG.o(.text+0xb4): In function `DrawScene()':
: undefined reference to `glEnd'
/tmp/cc4IEmVG.o(.text+0xb9): In function `DrawScene()':
: undefined reference to `glFlush'
/tmp/cc4IEmVG.o(.text+0xe1): In function `main':
: undefined reference to `glutInit'
/tmp/cc4IEmVG.o(.text+0xee): In function `main':
: undefined reference to `glutInitDisplayMode'
/tmp/cc4IEmVG.o(.text+0x103): In function `main':
: undefined reference to `glutInitWindowSize'
/tmp/cc4IEmVG.o(.text+0x112): In function `main':
: undefined reference to `glutInitWindowPosition'
/tmp/cc4IEmVG.o(.text+0x122): In function `main':
: undefined reference to `glutCreateWindow'
/tmp/cc4IEmVG.o(.text+0x132): In function `main':
: undefined reference to `glutDisplayFunc'
/tmp/cc4IEmVG.o(.text+0x13a): In function `main':
: undefined reference to `glutMainLoop'
tuxipuxi
18-05-2003, 12:24
das hoert sich nach einer falschen compileanweisung an.
mit welchen libs laesst du es kompilieren? paste mal
anda_skoa
18-05-2003, 12:24
"undefined reference" ist ein Linkerfehler
Wahrscheinlich vergessen gegen glut zu linken
Ciao,
_
ähm...
Könntet ihr das mit dem linken mal genauer erklären? Irgendwie versteh ich das nicht ganz... wie "gegen glut linken"?
Hab davon noch nicht ganz soviel ahnung, da ich erst seit relativ kurzer Zeit programmiere...
anda_skoa
18-05-2003, 17:27
Den GL Code von oben wirst du ja nicht aus dem Hut gezauert haben :)
In einem Tutorial steht normalerweise auch, wie der Compileraufruf auszusehen hat.
Ich schätze du musst mit libGL und libglut linken
#> gcc -o program source.c -lglut -lGL
Ciao,
_
Achsoooooo
Ich zitiere mal das Tut:
gcc -I. -c HelloOpenGL.c
gcc -o HelloOpenGL HelloOpenGL.o \
-IGL -Iglut -IGLU
Was davon muss ich jetzt eingeben?
tuxipuxi
18-05-2003, 18:06
hi,
also stueck fuer stueck:
gcc ist ja der aufruf des c-compilers.
als naechstes gibst du dein gewuenschen outputname an:
-o HelloOpenGl
dann deine sourcedateien:
HelloOpenGl.c
dann musst du dem compiler verraten wo deine headerdateien liegen
-I/usr/X11R6/include
und dann noch gegen die libs linken
-lGL -lglut
die reihenfolge muss nicht eingehalten werden.
also gcc -o HelloOpenGl HelloOpenGl.c -I/usr/X11R6/include -lGL -lglut
gruss,
tuxipuxi.
Jetzt funktionierts, vielen Dank! :D
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.