IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Problème linkage lors compilation


Sujet :

OpenGL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut Problème linkage lors compilation
    Bonsoir,

    Voici mon problème, j'essaie désespérément de compiler un application openGL. La compilation en elle même ce passe bien mais lors du linkage j'ai des erreurs de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    undefined reference to `glEnable'
    Cela est certainement dû au fait que la librairie n'est pas linké, pourtant j'ai bien rajouter ces options:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -lglu32
    -lglut32
    -lopengl32
    Je ne comprend donc vraiment pas pourquoi l'édition de lien lors de la liaison de l'exécutable plante Je précise que j'utilise Code::Blocks.

    Merci à ceux qui pourront m'aider

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Vérifie bien que tu as mis les bibliothèques à linker pour le projet en Debug mais aussi en Release ( et surtout pour celui que t'utilise ).
    Si le problème vient bien de ce que tu nous dis, va dans les options et précise le chemin ou Code::Blocks doit aller chercher la bibliothèques.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    J'avais déjà préciser les adresses des librairies dans les options de mon projet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Program files\CodeBlocks\MinGW\lib\libopengl32.a
    C:\Program files\CodeBlocks\MinGW\lib\libopengl32.a
    C:\Program files\CodeBlocks\MinGW\lib\libopengl32.a
    Et les bibliothèques sont bien installé car j'arrive à compiler le projet par défaut de Code::Blocks quand je créé un projet OpenGL.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    J'avais aussi pensé au fait qu'il pouvait manquer le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <GL/gl.h>
    Mais bon, je ne pense pas, mais tu peux toujours vérifier :p
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    En effet cela coutait rien d'essayer^^ mais malheureusement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef AFFICHAGE_H
    #define AFFICHAGE_H
     
    #include "affichage_font.h"
    #include "texture.h"
    #include "util.h"
    #include <string>
    #include <GL/gl.h>

  6. #6
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    ton erreur est clairement une erreur de linkage, pas d'include
    tu dois vérifier tes chemins et le nom de la lib inclue
    vérifies aussi que tu as entré les infos au bon endroit
    et si tu as des version debug et release de ton projet il faut que ce soit dans les 2
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par scary Voir le message
    J'avais déjà préciser les adresses des librairies dans les options de mon projet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Program files\CodeBlocks\MinGW\lib\libopengl32.a
    C:\Program files\CodeBlocks\MinGW\lib\libopengl32.a
    C:\Program files\CodeBlocks\MinGW\lib\libopengl32.a
    Et les bibliothèques sont bien installé car j'arrive à compiler le projet par défaut de Code::Blocks quand je créé un projet OpenGL.
    Question bête, mais pourquoi trois fois la lib opengl? et pas les lib glu et glut...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par plegat Voir le message
    Question bête, mais pourquoi trois fois la lib opengl? et pas les lib glu et glut...
    Tout simplement une erreur de c/c Et pour ce qui est des librairies j'ai pourtant bien choisie les bonnes avec le chemin qui va avec

  9. #9
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    le fichier de ton projet est un fichier avec l'extension cbp
    c'est un fichier texte, pourrais tu copier le contenu dans un post (s'il n'est pas trop gros ?)
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Très bien voici donc mon fichier cbp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <CodeBlocks_project_file>
    	<FileVersion major="1" minor="6" />
    	<Project>
    		<Option title="shooter" />
    		<Option makefile="makefile" />
    		<Option pch_mode="2" />
    		<Option compiler="gcc" />
    		<Build>
    			<Target title="default">
    				<Option output="..\..\..\shooter" prefix_auto="1" extension_auto="1" />
    				<Option object_output=".\obj" />
    				<Option type="0" />
    				<Option compiler="gcc" />
    				<Compiler>
    					<Add option="-pipe" />
    					<Add option="-g0" />
    					<Add option="-fno-rtti" />
    					<Add option="-fno-exceptions" />
    					<Add option='-I&quot;../../lib/sdl/include&quot;' />
    					<Add option='-I&quot;../../lib/gtl/include&quot;' />
    					<Add option='-I&quot;../../lib/fmod/include&quot;' />
    					<Add option='-I&quot;../../lib/libxml2/include&quot;' />
    				</Compiler>
    				<Linker>
    					<Add option="-s" />
    					<Add option='-L&quot;../../lib/sdl/lib/mingw&quot;' />
    					<Add option='-L&quot;../../lib/gtl/lib/mingw&quot;' />
    					<Add option='-L&quot;../../lib/fmod/lib/mingw&quot;' />
    					<Add option='-L&quot;../../lib/libxml2/lib/mingw&quot;' />
    					<Add option="-lmingw32" />
    					<Add option="-mwindows" />
    					<Add option="-lSDLmain" />
    					<Add option="-lSDL" />
    					<Add option="-lgtl" />
    					<Add option="-lopengl32" />
    					<Add option="-lglu32" />
    					<Add option="-lxml2" />
    					<Add option="-lfmod" />
    				</Linker>
    				<MakeCommands>
    					<Build command="$make -f $makefile $target" />
    					<CompileFile command="$make -f $makefile $file" />
    					<Clean command="$make -f $makefile clean $target" />
    					<DistClean command="$make -f $makefile distclean $target" />
    				</MakeCommands>
    			</Target>
    		</Build>
    		<Compiler>
    			<Add option="-D_DEBUG" />
    		</Compiler>
    		<Linker>
    			<Add option="-L ../../lib/fmod/lib/mingw" />
    			<Add option="-L ../../lib/gtl/lib/mingw" />
    			<Add option="-L ../../lib/sdl/lib/mingw" />
    			<Add option="-L ../../lib/libxml2/lib/mingw" />
    			<Add option="-mwindows" />
    			<Add option="-s" />
    			<Add library="mingw32" />
    			<Add library="fmod" />
    			<Add library="gtl" />
    			<Add library="SDLmain" />
    			<Add library="SDL" />
    			<Add library="xml2" />
    			<Add library="opengl32" />
    			<Add library="glu32" />
    		</Linker>
    		<Unit filename="..\..\src\affichage.cpp" />
    		<Unit filename="..\..\src\affichage.h" />
    		<Unit filename="..\..\src\affichage_font.cpp" />
    		<Unit filename="..\..\src\affichage_font.h" />
    		<Unit filename="..\..\src\ctrl_entite.cpp" />
    		<Unit filename="..\..\src\ctrl_entite.h" />
    		<Unit filename="..\..\src\ctrl_fenetre.cpp" />
    		<Unit filename="..\..\src\ctrl_fenetre.h" />
    		<Unit filename="..\..\src\ctrl_jeu.cpp" />
    		<Unit filename="..\..\src\ctrl_jeu.h" />
    		<Unit filename="..\..\src\ctrl_particule.cpp" />
    		<Unit filename="..\..\src\ctrl_particule.h" />
    		<Unit filename="..\..\src\ctrl_son.cpp" />
    		<Unit filename="..\..\src\ctrl_son.h" />
    		<Unit filename="..\..\src\entite.cpp" />
    		<Unit filename="..\..\src\entite.h" />
    		<Unit filename="..\..\src\entite_arme.cpp" />
    		<Unit filename="..\..\src\entite_arme.h" />
    		<Unit filename="..\..\src\entite_bonus.cpp" />
    		<Unit filename="..\..\src\entite_bonus.h" />
    		<Unit filename="..\..\src\entite_ennemi.cpp" />
    		<Unit filename="..\..\src\entite_ennemi.h" />
    		<Unit filename="..\..\src\entite_joueur.cpp" />
    		<Unit filename="..\..\src\entite_joueur.h" />
    		<Unit filename="..\..\src\entree.cpp" />
    		<Unit filename="..\..\src\entree.h" />
    		<Unit filename="..\..\src\entree_clavier.cpp" />
    		<Unit filename="..\..\src\entree_clavier.h" />
    		<Unit filename="..\..\src\entree_souris.cpp" />
    		<Unit filename="..\..\src\entree_souris.h" />
    		<Unit filename="..\..\src\fx.cpp" />
    		<Unit filename="..\..\src\fx.h" />
    		<Unit filename="..\..\src\fx_etoile.cpp" />
    		<Unit filename="..\..\src\fx_etoile.h" />
    		<Unit filename="..\..\src\fx_explosion.cpp" />
    		<Unit filename="..\..\src\fx_explosion.h" />
    		<Unit filename="..\..\src\fx_fumee.cpp" />
    		<Unit filename="..\..\src\fx_fumee.h" />
    		<Unit filename="..\..\src\fx_particule.cpp" />
    		<Unit filename="..\..\src\fx_particule.h" />
    		<Unit filename="..\..\src\glext.h" />
    		<Unit filename="..\..\src\main_sdl.cpp" />
    		<Unit filename="..\..\src\main_sdl.h" />
    		<Unit filename="..\..\src\mipmaps_2d.cpp" />
    		<Unit filename="..\..\src\mipmaps_2d.h" />
    		<Unit filename="..\..\src\texture.cpp" />
    		<Unit filename="..\..\src\texture.h" />
    		<Unit filename="..\..\src\texture_2d.cpp" />
    		<Unit filename="..\..\src\texture_2d.h" />
    		<Unit filename="..\..\src\texture_manager.cpp" />
    		<Unit filename="..\..\src\texture_manager.h" />
    		<Unit filename="..\..\src\type.cpp" />
    		<Unit filename="..\..\src\type.h" />
    		<Unit filename="..\..\src\type_arme.cpp" />
    		<Unit filename="..\..\src\type_arme.h" />
    		<Unit filename="..\..\src\type_bonus.cpp" />
    		<Unit filename="..\..\src\type_bonus.h" />
    		<Unit filename="..\..\src\type_bonus_arme.cpp" />
    		<Unit filename="..\..\src\type_bonus_arme.h" />
    		<Unit filename="..\..\src\type_bonus_bouclier.cpp" />
    		<Unit filename="..\..\src\type_bonus_bouclier.h" />
    		<Unit filename="..\..\src\type_ennemi.cpp" />
    		<Unit filename="..\..\src\type_ennemi.h" />
    		<Unit filename="..\..\src\type_joueur.cpp" />
    		<Unit filename="..\..\src\type_joueur.h" />
    		<Unit filename="..\..\src\util.cpp" />
    		<Unit filename="..\..\src\util.h" />
    		<Unit filename="..\..\src\util_timer.cpp" />
    		<Unit filename="..\..\src\util_timer.h" />
    		<Unit filename="..\..\src\window.cpp" />
    		<Unit filename="..\..\src\window.h" />
    		<Unit filename="..\..\src\window_sdl.cpp" />
    		<Unit filename="..\..\src\window_sdl.h" />
    		<Unit filename="..\..\src\xml_niveau.cpp" />
    		<Unit filename="..\..\src\xml_niveau.h" />
    		<Unit filename="..\..\src\xml_score.cpp" />
    		<Unit filename="..\..\src\xml_score.h" />
    		<Extensions>
    			<code_completion />
    			<debugger />
    		</Extensions>
    	</Project>
    </CodeBlocks_project_file>

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Alors ne comprenant vraiment pas d'où pouvais venir le problème, j'ai donc essayé de faire une cross compilation sous linux. J'ai donc fait un Makefile pour pouvoir compiler le projet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    PROJET_BIN = ../../../TotoMan.exe
    PROJET_SOURCE = ../../src
    PROJET_INCLUDE = ../../src
    PROJET_OBJ = ./obj
     
    EXT_DIR = -L"../../lib/sdl/lib/mingw" -L"../../lib/gtl/lib/mingw" -L"../../lib/fmod/lib/mingw" -L"../../lib/libxml2/lib/mingw" 
    EXT_LIB = -lmingw32 -mwindows -lSDLmain -lSDL -lgtl -lopengl32 -lglu32 -lxml2 -lfmod
    EXT_INCLUDE = -I"../../lib/sdl/include" -I"../../lib/gtl/include" -I"../../lib/fmod/include" -I"../../lib/libxml2/include"
     
    CC = i586-mingw32msvc-g++
    OPTIMISATION = -Wall -pipe -g0 -O3 -fno-rtti -fno-exceptions -fexpensive-optimizations
     
    OBJ = \
    	$(PROJET_OBJ)/affichage.o \
    	$(PROJET_OBJ)/affichage_font.o \
    	$(PROJET_OBJ)/ctrl_entite.o \
    	$(PROJET_OBJ)/ctrl_fenetre.o \
    	$(PROJET_OBJ)/ctrl_jeu.o \
    	$(PROJET_OBJ)/ctrl_particule.o \
    	$(PROJET_OBJ)/ctrl_son.o \
    	$(PROJET_OBJ)/entite.o \
    	$(PROJET_OBJ)/entite_arme.o \
    	$(PROJET_OBJ)/entite_bonus.o \
    	$(PROJET_OBJ)/entite_ennemi.o \
    	$(PROJET_OBJ)/entite_joueur.o \
    	$(PROJET_OBJ)/entree.o \
    	$(PROJET_OBJ)/entree_clavier.o \
    	$(PROJET_OBJ)/entree_souris.o \
    	$(PROJET_OBJ)/fx.o \
    	$(PROJET_OBJ)/fx_etoile.o \
    	$(PROJET_OBJ)/fx_explosion.o \
    	$(PROJET_OBJ)/fx_fumee.o \
    	$(PROJET_OBJ)/fx_particule.o \
    	$(PROJET_OBJ)/main_sdl.o \
    	$(PROJET_OBJ)/mipmaps_2d.o \
    	$(PROJET_OBJ)/texture.o \
    	$(PROJET_OBJ)/texture_2d.o \
    	$(PROJET_OBJ)/texture_manager.o \
    	$(PROJET_OBJ)/type.o \
    	$(PROJET_OBJ)/type_arme.o \
    	$(PROJET_OBJ)/type_bonus.o \
    	$(PROJET_OBJ)/type_bonus_arme.o \
    	$(PROJET_OBJ)/type_bonus_bouclier.o \
    	$(PROJET_OBJ)/type_ennemi.o \
    	$(PROJET_OBJ)/type_joueur.o \
    	$(PROJET_OBJ)/util.o \
    	$(PROJET_OBJ)/util_timer.o \
    	$(PROJET_OBJ)/window.o \
    	$(PROJET_OBJ)/window_sdl.o \
    	$(PROJET_OBJ)/xml_niveau.o \
    	$(PROJET_OBJ)/xml_score.o
     
    all: rep $(PROJET_BIN) clean
     
    rep:
    	mkdir $(PROJET_OBJ)
     
    $(PROJET_BIN): $(OBJ)
    	$(CC) -s -o $(PROJET_BIN) $^ $(EXT_DIR) $(EXT_LIB)
     
    $(PROJET_OBJ)/%.o: $(PROJET_SOURCE)/%.cpp $(PROJET_INCLUDE)/%.h
    	$(CC) -o $@ -c $< $(OPTIMISATION) $(EXT_INCLUDE)
     
    clean:
    	rm -R $(PROJET_OBJ)
    Et ça marche niquel j'ai un exécutable windows qui marche très bien. Donc le problème le problème de linkage je ne vois vraiment pas ou il peut être sous code::blocks car j'ai utilisé exactement les même options dans code::blocks que dans mon Makefile

Discussions similaires

  1. [Ubuntu] Problème bizarre lors de la compilation
    Par membreComplexe12 dans le forum Plateformes
    Réponses: 5
    Dernier message: 01/09/2011, 15h49
  2. Erreur linkage lors de la compilation d'OpenSSL
    Par Fooshi dans le forum Visual Studio
    Réponses: 1
    Dernier message: 01/12/2010, 17h18
  3. Problème image lors de la compilation
    Par FMDCC dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/07/2009, 17h50
  4. Problème bizzard à la compilation...
    Par Franck.H dans le forum C
    Réponses: 12
    Dernier message: 12/10/2005, 21h54
  5. [VB.NET] Problème étrange lors de la création de BDD
    Par Playmo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/03/2005, 22h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo