#1 Le 07/11/2011, à 11:31
- DevraisJamaiscoder
[C++][OpenGL][résolu]fonctions gl pas reconnue!
Bien le bonjour!
Je suis un petit nouveau dans le monde de la programmation (et sur le forum... D'ailleurs, j'ai un doute : est ce que je poste au bonne endroit? J'ai fait mon choix en fonction d'où se trouvais la majorités des sujets qui semblaient parler du problème qui m'occupe), et tente d'utiliser OpenGL.
Mon problème :
Alors qu'il me semble avoir bien installé glut sur mon ordi (avoir mis les bonnes bibliothèque dans le code, les bonnes options dans le Makefile...), j'arrive pas à utiliser la bibliothèque...
Comme je pige pas grand chose à quel bibliothèque prendre, je me suis contenté de télécharger tout ce qui a du "mesa" "freeglut" et autre "glut" (bon pas tout, mais disons tout ce qui est conseillé sur différents forumes) avec le système synaptique...
Le p'ti code que j'ai crée à la base marche très bien sur les ordi de ma fac, mais pas chez moi... De même, j'ai essayé avec le code de la présentation de Opengl sur wiki (ici :http://fr.wikipedia.org/wiki/OpenGL_utility_toolkit), et c'est le même problème :
g++ -lglut -L /usr/lib/ -lglut -lGLU -lGL -g bidon.cpp
/tmp/ccbpIBgv.o: In function `reshape(int, int)':
/home/ribardn/Bureau/Programmation/bidon.cpp:9: undefined reference to `glViewport'
[et toute les autres fonctions en gl]
/home/ribardn/Bureau/Programmation/bidon.cpp:18: undefined reference to `glutPostRedisplay'
/tmp/ccbpIBgv.o: In function `display()':
/home/ribardn/Bureau/Programmation/bidon.cpp:26: undefined reference to `glClear'
[et toute les autres fonctions en gl]
/tmp/ccbpIBgv.o: In function `main':
/home/ribardn/Bureau/Programmation/bidon.cpp:50: undefined reference to `glutInit'
[et toute les autres fonctions en gl]
collect2: ld a retourné 1 code d'état d'exécution
(il s'agit du code sur le wiki, qui a le mérite d'être plus simple que le miens, et le problème est le même.).
Infos en plus :
Je code sous gedit, sur Ubuntu (haa bon? ;P), en utilisant un Makefile que voici :
CXX = g++
CXXFLAGS = -Wall -pedantic
#Option de librairie graphique pour Linux :
LIB = -L /usr/lib/ -lglut -lGLU -lGL -g
#=== Variables intelligentes du Makefile ===#
# $< désigne la première dépendance
# $^ désigne toutes les dépendances
# $@ désigne la cible
all: Complexe.o SuiteComplexe.o fractale.o fractale arcenciel
exec: all
clear && { ./arcenciel & ./fractale ; }
#Compilation des fichiers source en exécutables .o
%.o:%.cpp %.hpp
$(CXX) $(CXXFLAGS) -c $<
#Édition de liens entre les fichiers exécutables .o
fractale: fractale.o SuiteComplexe.o Complexe.o SuiteComplexe.cpp SuiteComplexe.hpp Complexe.cpp Complexe.hpp
$(CXX) $(CXXFLAGS) $(LIB) fractale.o SuiteComplexe.o Complexe.o -o fractale
#Permet de faire une version secondaire et tester les performances de différentes versions
1: fractale.o SuiteComplexe.o Complexe.o SuiteComplexe.cpp SuiteComplexe.hpp Complexe.cpp Complexe.hpp
$(CXX) $(CXXFLAGS) $(LIB) fractale.o SuiteComplexe.o Complexe.o -o fractale1
arcenciel: arcenciel.o
$(CXX) $(CXXFLAGS) $(LIB) arcenciel.o -o arcenciel
clean:
rm -f *.o *~ mainComplexe mainSuiteComplexe main arcenciel fractale fractale1 fractale2
gedit:
gedit fractale.cpp arcenciel.cpp SuiteComplexe.cpp SuiteComplexe.hpp Makefile &
Pour les biblitohèques inclues, j'ai un peut tout essayé parmis celles-ci (dans arcentielle/fractale) :
#include <GL/glut.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
Je sais bien que ce problème est commun et qu'il y a de nombreux topiques sur différents forum à ce sujet... Mais pour l'instant, aucun ne m'a apporté l'illumination... Il y a des problème similaire sur CodeBlocks, mais apparament, c'est qu'un problème d'option... Comme en gros Makefile fait ce boulot, j'ai l'impression que c'est le Makefile le problème... Mais pas moyen de voir quoi.
L'autre possibilité que je vois, c'est que j'ai pas les bons paquets/la bonne version d'un des paquets... Sur un des sujets, ils conseillent de passer à une autre version de glut (en particulier avec synaptique, forcer la version). Le truc, c'est que :
1) J'arrive pas à forcer la version (l'option est pas utilisable).
2) Forcer la version alors que je sais pas exactement pourquoi et comment ça marche... Bein je suis pas chaud chaud...
PJC, c'est quand même assez frustrant de rien comprendre...
EDIt : Oula, j'ai oublié de préciser un truc important !
Le code semble pas râler avant l'édition de lien :
g++ -Wall -pedantic -c Complexe.cpp
g++ -Wall -pedantic -c SuiteComplexe.cpp
g++ -Wall -pedantic -c -o fractale.o fractale.cpp
g++ -Wall -pedantic -L /usr/lib/ -lglut -lGLU -lGL -g fractale.o SuiteComplexe.o Complexe.o -o fractale
fractale.o: In function `SetView()':
fractale.cpp:(.text+0xa8a): undefined reference to `glMatrixMode'
[Et la même erreur pour toutes lesfonctions en gl]
Dernière modification par DevraisJamaiscoder (Le 07/11/2011, à 12:30)
Hors ligne
#2 Le 07/11/2011, à 12:09
- grim7reaper
Re : [C++][OpenGL][résolu]fonctions gl pas reconnue!
Salut,
Problème que tu n’es pas le seul à avoir (et on a pas fini de voir ges gens dans ton cas…).
C’est Ubuntu qui a changé les options par défaut de l’éditeur de liens -__-' (ça va en perturber plus d’un).
En gros, il faut que tu mettes les trucs du genre
-L /usr/lib/ -lglut -lGLU -lGL
En fin de ligne.
Ou alors tu ajoutes
-Wl,--no-as-needed
dans ta ligne de compilation (comme expliqué dans le post que j’ai linké).
Dernière modification par grim7reaper (Le 07/11/2011, à 12:09)
Hors ligne
#3 Le 07/11/2011, à 12:28
- DevraisJamaiscoder
Re : [C++][OpenGL][résolu]fonctions gl pas reconnue!
Je t'aime \o/!
Oui, parce que ce problème m'a bien fait **!
En gros, j'ai ajouté ce que tu m'as dit... Pour l'instant, je suis pas sûre de bien comprendre le problème, mais je vais me lire l'autre topique pour ça^^.
Me reste plus qu'à mettre [résolu] à mon sujet.
PJC, merci encore.
EDIT : faudrait peut être mettre le machin à un endroit plus visible, histoire de pas avoir 50 c** comme moi derrière?
Dernière modification par DevraisJamaiscoder (Le 07/11/2011, à 12:50)
Hors ligne
#4 Le 10/11/2011, à 08:49
- quack1
Re : [C++][OpenGL][résolu]fonctions gl pas reconnue!
Merci beaucoup grim7reaper, j'ai passé des heures à me demander pourquoi j'arrivais pas à compiler un programme, alors que j'avais les bonnes options, et ça venait juste de ces ******** d'options de compilation qui étaient pas à la bonne place
Ils auraient dû mettre ça dans la doc ..
EN tout cas, merci beaucoup
@_Quack1
Hors ligne