undefined reference to ...
-
nabend!
hab seit langem mal wieder angefangen n bisl zu proggen, abistress is ja jetz vorbei
da ich zwischendurch meine platten plattgemacht hab, ist nix mehr da von irgendwelchen programmierspezifischen installationen, also bibliotheken, compiler etc. . ich benutze jetzt den Dev-C++ und will mich mal wieder in OpenGl versuchen.
hab mir nen code runtergeladen, der nur mit der Glut arbeitet (also nur die glut.h included). alle dazu nötigen files hab ich, sodass mir der compiler an sich keine fehlermeldungen beim compilieren des codes gibt. nur der linker meint bei jedem OpenGl-befehl "undefined reference to xy". ... hä?! ... wieso das? könnt ihr mir helfen?
thx schonmal,
SirNoname
-
Nicht der ganze Kot ist in den Headern...
LIBs muß man auch dazu linken...
http://www.xmission.com/~nate/glut.html
-
Benutz die Suche: http://www.c-plusplus.net/forum/viewtopic.php?t=67790&highlight=linken+gebacken
Bye, TGGC \-/
-
hi
hab aufmerksamst eure antworten studiert und mich durch die links gekämpft, aber irgendwie bin ich zu blöd ... deshalb beschreibe ich nochmal ausführlichst mein prob:
also ich benutze den Dev-C++ (Version 4).
ich habe mir die glut-3.7.6-bin runtergeladen den inhalt folgendermaßen entpackt:
glut32.dll in Windows\System und Windows\System32,
glut32.lib in Dev-C++\lib,
glut.h in Dev-C++\include\GL.-> Die README-win32 hab ich gelassen wo sie ist, genauso wie die glut.def . Ist das das prob? Wohin muss die glut.def?
Dann hab ich hier die fehlermeldung des linkers, vielleicht hilft die ja:
http://www.sirnonamesplace.de/glut_funzt_net.jpg
Außerdem hab ich gelesen, dass man beim MS Visual noch die dateien im linker einbinden muss, irgendwo bei "einstellungen -> linker" oder so ... muss ich das auch beim Dev-C++ machen? (hab ich nich getan)
hier dann mal der code um den`s geht:
#include <GL/glut.h> void Display(void) { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glBegin(GL_POLYGON); glColor3f(0.0,0.0,0.0); glVertex3f(-0.5,-0.5,-3.0); glColor3f(1.0,0.0,0.0); glVertex3f(0.5,-0.5,-3.0); glColor3f(0.0,0.0,1.0); glVertex3f(0.5,0.5,-3.0); glEnd(); glFlush(); //Finish rendering } void Reshape(int x, int y) { if (y == 0 || x == 0) return; //Nothing is visible then, so return //Set a new projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); //Angle of view:40 degrees //Near clipping plane distance: 0.5 //Far clipping plane distance: 20.0 gluPerspective(40.0,(GLdouble)x/(GLdouble)y,0.5,20.0); glMatrixMode(GL_MODELVIEW); glViewport(0,0,x,y); //Use the whole window for rendering } int main (int argc, char **argv) { //Initialize GLUT glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(300,300); //Create a window with rendering context and everything else we need glutCreateWindow("Intro"); glClearColor(0.0,0.0,0.0,0.0); //Assign the two used Msg-routines glutDisplayFunc(Display); glutReshapeFunc(Reshape); //Let GLUT get the msgs glutMainLoop(); return 0; }
so ... ich denk jetzt hab ich alles aufgeschrieben was ich weiß über die sache *g* ... bedank mich jetzt schonmal für eure zeit
SirNoname der hilflose *g*
-
ja, die libs musst du natürlich auch einbinden(das is übrigens das, was über deinem letzten post gesagt wurde)
-
wie schon gesagt zu musst die lib's mitlinken
menü
-> projekt
--> projekt optionen
---> register parameterdort findest du ne textbox wo drüber linker steht, dahin schreibst du dann
-lglut32
-lopengl32und fertig.
ps: besorg dir mal nen neuen dev-cpp
-
@ miller_m: thx für die ausführliche hilfe ....
@ otze: stimmt, das stand schon da ... nur leider nich so ausführlich wie mir das miller_m beschrieben hat ... egal.also, hab alles gemacht wie mir geheißen ... auch das mit der neuen version ^^. aber: neue fehlermeldung:
www.sirnonamesplace.de/fehlermeldung.jpg
???
SirNoname
-
was steht den oberhalb von
#include <gl/glut.h>
-
@ miller_m : da steht nix. ist der code an sich soweit OK? ... ich mein muß ja wenn er keine weiteren fehler ausgibt ... aber warum dieses
"In file included from main.cpp" ? hmmm ....SirNoname
-
probiers mal so
#ifdef _WIN32 #include <windows.h> #endif #include <gl/gl.h> #include <gl/glut.h>
-
nope ... so gehts auch net ... bringt haufenweise fehler ...
wollt noch mal schnell ergänzen dass ich das mit dem linker-eintrag genauso gemacht hab wie du gesagt hast ... also:
http://www.sirnonamesplace.de/linker.jpg
hab also die 2 einträge so gemacht ... war das richtig?
SirNoname
-
hab's jetzt mal getestet.
consolen pojekt cpp erstellt.
mitgelinkt -lglut32#include <gl/glut.h> int main(int argc, char *argv[]) { glutInit(&argc, argv); return 0; }
wenn es immernoch nicht geht, lad dir glut nochmal runter.
2. versuch
versuch mal -lglut32.lib zu linken
-
Eventuell liegt es auch daran, dass sie Library nicht MinGW kompatibel ist. Außerdem würde ich wenn zu freeglut greifen und nicht zu glut (was ziemlich antiquiert ist).
cya
liquid
-
nabend nochmal an alle mitlesenden ^^
@ LiquidAcid: hab zwar keine ahnung was MinGW is ... aber "nicht kompatibel" hört sich schon wieder ziemlich schlecht an *gg*
und warum freeglut?
werd mich mal belesen ... thx erstmal für die hilfe.
-> dacht mir schon fast dass da irgendwas im busch is ... ich mein n paar files in ordner kopieren kann selbst ich und wenn die screenys mit den einträgen im linker in ordnung sind kanns ja nur noch was "außergewöhnliches" sein ^^
SirNoname
-
freeglut weil glut seit ein paar Jährchen nicht mehr weiterentwickelt wird (MJK hat wohl besseres zu tun), ich sagte ja bereits dass es antiquiert ist.
MinGW sollte dir eigentlich ein Begriff sein, da es der Standard Compiler ist den Dev-C++ nutzt.
cya
liquid
-
glut und MinGW funktionieren zusammen.
wie gesagt habe es getested.[edit]
von glut und freeglut gibt es übrigens packages, dann dürftest du keine probleme haben.-> werkzeuge
--> auf updates/pakete prüfen
anclicken, downloaden, installiert sich selber und du hast dann auch projekt wizards, somit dürfte nix mehr schief gehen.
-
endlich mal n erfolgserlebniss ^^
also, mal wieder, great THX @ alle, die hier gepostet haben ^^ es funzt ... herlich ^^
da ich nich aufhören kann mit nerven hier die nächste frage: gibts irgendwo schöne tutorials, die sich nur mit freeglut beschäftigen?
-> kann mir nich vorstellen dass die befehle gleich sind ... oder?-> eigentlich reicht mir schon nen kleiner code aus damit ich die syntax n bisl verstehe ... den rest probier ich mir schon mit hilfe der befehlserklärung aus *g*
übrigens werd ich mal auf meine page (nich lachen!) alle files und ne anleitung packen für freeglut ... vielleicht sind noch andre so unfähig wie ich und brauchen hilfe ^^
SirNoname
-
SirNoname schrieb:
da ich nich aufhören kann mit nerven hier die nächste frage: gibts irgendwo schöne tutorials, die sich nur mit freeglut beschäftigen?
-> kann mir nich vorstellen dass die befehle gleich sind ... oder?http://freeglut.sourceforge.net/docs/api.php
so wie das verstehe soll die api ziemlich gleich sein.eine gute seite über opengl und ihre "abkömmlinge"
http://nehe.gamedev.net/
-
also nochmals thx für die hilfe und ich hab denk ich jetzt ne menge mehr ahnung als vorher ... aber sagt mir, wenn ich mich irre ... aber bei nehe gibs keine freeglut - tut`s oder? hab ne menge deren tutorials schon durchgearbeitet (ok, die ersten paar *g*) vor ner weile, aber ich mein schon bei den include`s steht ja keine freeglut.h oder?
trotzdem nochmal zum verständniss:
freeglut wurde aus der glut entwickelt und is eine art befehlssatz. man muss also nicht die "originalen" opengl-befehle verwenden, sondern kann die glut oder eben die freeglut nehmen. jetzt meine frage: heißt das, dass man programme nur mit hilfe der freeglut schreiben kann, oder is das praktisch nur ne hilfe für bestimmte sachen? oder: kann ich ein programm schreiben, was NUR freeglut-befehle enthält?und da liegt dann auch schon mein problem ... irgendwie find ich keine vollständigen codes eines progs, was mit hilfe der freeglut geschrieben wurde. ich mein die api documentation is ganz nett ... aber n ganzes prog wär echt besser.
SirNoname
-
SirNoname schrieb:
hab ne menge deren tutorials schon durchgearbeitet (ok, die ersten paar *g*) vor ner weile, aber ich mein schon bei den include`s steht ja keine freeglut.h oder?
freeglut == glut bloss erweitert und "besser", aber auf jedenfall neuer.
SirNoname schrieb:
freeglut wurde aus der glut entwickelt und is eine art befehlssatz.
ja
SirNoname schrieb:
man muss also nicht die "originalen" opengl-befehle verwenden, sondern kann die glut oder eben die freeglut nehmen. jetzt meine frage: heißt das, dass man programme nur mit hilfe der freeglut schreiben kann, oder is das praktisch nur ne hilfe für bestimmte sachen?
du kannst nur bestimmte sachen machen.
"free"glut erleichert dir das erstellen von fenstern, umgang mit dem keyboard und maus usw usw usw und das ganze ist plattformunabhänig. zum zeichnen wird schon opengl benutzt.SirNoname schrieb:
oder: kann ich ein programm schreiben, was NUR freeglut-befehle enthält?
können schon, allerdings wird das ein sehr mageres programm.