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

SDL Discussion :

Problème de linker avec SDL_Image


Sujet :

SDL

  1. #1
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut Problème de linker avec SDL_Image
    Salut à tous

    Voilà, j'ai commencé un projet avec la SDL avec C::B sous windows. Tout se déroulait très bien, l'installation de la bibliothèque SDL en elle même n'a pas posé problème.

    Pour plus de commodité, j'ai voulu ajouter l'extension SDL_Image afin de ne pas avoir besoin de m'encombrer d'images BMP. C'est à ce moment là qu'intervient le problème.

    J'ai donc téléchargé l'extension ici http://www.libsdl.org/projects/SDL_image/, j'ai bien pris la version Windows, j'ai dézippé le tout dans la racine de C::B.

    J'ai donc bien les headers dans le dossier include/SDL, les dll dans le meme dossier que mon projet et le fichier lib dans le dossier lib de C::B.

    J'ai bien ajouté le fichier SDL_image.lib dans les options du linker. Mais pourtant le linker ne "comprend" toujours pas...

    J'ai toujours le même message d'erreur
    undefined reference to IMG_Load ()

    J'ai regardé sur pas mal de threads et de FAQ, et j'ai essayé pas mal de trucs (comme changé le fichier SDL_image.lib de place, tellement que maintenant il doit être dans tous les dossiers de mon PC). Enfin bref si quelqu'un a une idée je serais preneur ! Merci
    Omnes Vulnerant Ultima Necat
    Bye

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Bizarre ça je sais pas mais vérifie que :

    Et tu sur que tu as mis les include et les lib sont dans :
    CodeBlocks/MinGW/mingw32/include/SDL
    CodeBlocks/MinGW/mingw32/lib

    et dans code block clik droit sur ton projet ->build option -> Linker Setting
    et écrire
    SDL
    SDL_image

    Mais je dois dire que c'est étrange peut tu envoyer ton projet pour voir ?

  3. #3
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Le fichier SDL_image.lib est un peu partout à vrai dire :
    - C:\Program Files (x86)\CodeBlocks\lib
    - C:\Program Files (x86)\CodeBlocks\MinGW\lib
    - C:\Program Files (x86)\CodeBlocks\MinGW\mingw32\lib
    - C:\Program Files (x86)\CodeBlocks\SDL\lib

    J'ai utilisé le template C::B par défaut ce qui permet de ne pas avoir de problèmes avec la SDL, et pour SDL_image j'ai rajouté pas mal de trucs...

    Je peux te passer le contenu du fichier .cbp correspondant au projet ?

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <CodeBlocks_project_file>
    <FileVersion major="1" minor="6" />
    	<Project>
    	<Option title="xos__sdl__project" />
    	<Option pch_mode="2" />
    	<Option compiler="gcc" />
    	<Build>
    <Target title="Debug">
    	<Option output="bin\Debug\xos__sdl__project" prefix_auto="1" extension_auto="1" />
    			<Option object_output="obj\Debug\" />
    			<Option type="1" />
    	<Option compiler="gcc" />	
    	<Compiler>			
    	<Add option="-Wall" />
            <Add option="-Werror" />
    		<Add option="-g" />
    	<Add directory="C:\Users\SHugo\Documents\Prog\Projets\xos__sdl__project" />
    			</Compiler>
    	<Linker>
    <Add library="SDL_image.lib" />
    	<Add directory="C:\Program Files (x86)\CodeBlocks\SDL\lib" />
    			</Linker>
    		</Target>
    	<Target title="Release">
    		<Option output="bin\Release\xos__sdl__project" prefix_auto="1" extension_auto="1" />
    		<Option object_output="obj\Release\" />
    		<Option type="0" />		
    <Option compiler="gcc" />			
    <Compiler>			
    <Add option="-O2" />	
    	</Compiler>	
    	<Linker>	
    	<Add option="-s" />
    		<Add library="SDL_image.lib" />
    			</Linker>	
    	</Target>
    	</Build>
    	<Compiler>
    	<Add option="-Wall" />
    	<Add directory="$(#sdl.include)" />
    		<Add directory="C:\Users\Shugo\Documents\Prog\Projets\xos__sdl__project\" />
    	<Add directory="C:\Program Files (x86)\CodeBlocks\lib" />
    	</Compiler>
    	<Linker>
    	<Add library="mingw32" />
    	<Add library="SDLmain" />
    	<Add library="SDL.dll" />
    	<Add library="user32" />
    		<Add library="gdi32" />
    	<Add library="winmm" />
    <Add library="dxguid" />
    	<Add library="SDL_image.lib" />
    		<Add directory="$(#sdl.lib)" />
    </Linker>
    		<Unit filename="main.c">
    	<Option compilerVar="CC" />
    	</Unit>
    <Extensions>
    	<code_completion />
    		<debugger />
    	</Extensions>
    </Project>
    </CodeBlocks_project_file>

    EDIT
    Et puis de toute façon les includes ne posent pas de problèmes sinon j'aurais un message d'erreur du type
    no such file or directory
    Omnes Vulnerant Ultima Necat
    Bye

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    J'ai utilisé le template C::B par défaut ce qui permet de ne pas avoir de problèmes avec la SDL, et pour SDL_image j'ai rajouté pas mal de trucs...
    J'espere que le probleme ne vient pas de la , j'ai jamais reussi a configurer un projet SDL =P


    Je peux te passer le contenu du fichier .cbp correspondant au projet ?
    oui c'est bon j'ai ton projet sous la main =)

    dans ton link il est faux tu as ecrit :
    SDLmain
    SDL.lib
    SDL_image.lib
    (les autres lib ne serve pas pour un projet SDL).

    Tu dois écrire :
    SDL
    SDL_image


    tous simplement , normalement ça marche , si ça marche pas peut tu faire un projet vide et rajoutes ces link ? pour voir si ça marche plus.

  5. #5
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Bon j'ai donc recréer un nouveau projet dont voici le .cbp
    Code XML : 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
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <CodeBlocks_project_file>
    <FileVersion major="1" minor="6" />
    <Project>
    <Option title="try" />
    <Option pch_mode="2" />
    <Option compiler="gcc" />	
    <Build>
    <Target title="Debug">
    <Option output="bin\Debug\try" prefix_auto="1" extension_auto="1" />
    <Option object_output="obj\Debug\" />	
    <Option type="1" />
    <Option compiler="gcc" />	
    <Compiler>		
    <Add option="-g" />		
    </Compiler>	
    </Target>
    <Target title="Release">
    <Option output="bin\Release\try" prefix_auto="1" extension_auto="1" />
    <Option object_output="obj\Release\" />	
    <Option type="0" />
    <Option compiler="gcc" />		
    <Compiler>	
    <Add option="-O2" />		
    </Compiler>			
    <Linker>		
    <Add option="-s" />		
    </Linker>	
    </Target>	
    </Build>
    <Compiler>
    <Add option="-Wall" />
    <Add directory="$(#sdl.include)" />
    </Compiler>	
    <Linker>
    <Add library="mingw32" />
    <Add library="SDLmain" />
    <Add library="SDL.dll" />
    <Add library="user32" />
    <Add library="gdi32" />
    <Add library="winmm" />
    <Add library="dxguid" />			
    <Add library="SDL" />		
    <Add library="SDL_image" />	
    </Linker>	
    <Unit filename="main.c">		
    <Option compilerVar="CC" />	
    </Unit>	
    <Extensions>		
    <code_completion />		
    <debugger />		
    </Extensions>
    </Project>
    </CodeBlocks_project_file>

    Avec un main de base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <SDL.h>
    #include <SDL_image.h>
     
    int main (int argc, char** argv)
    {
        IMG_Load ("truc") ;
        return 0 ;
    }
    Et j'ai cette fois une autre erreur de linker :
    cannot find -lSDLmain
    On progresse

    EDIT
    Et si je vire le SDLmain c'est avec le suivant, c'est à dire SDL que j'y ai droit...
    Omnes Vulnerant Ultima Necat
    Bye

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Pour SDLmain tu peux enlever et tous le reste aussi (y a pas de lib qui s'appelle SDLmain donc normal qu'il la trouve pas ^^) pareil pour SDL.dll et SDL_image.lib


    Alors sur ton nouveau projet tu n'as besoin que de
    SDL
    SDL_image

    J'ai modifié ton projet et ça donne ça :
    Code XML : 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
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <CodeBlocks_project_file>
    	<FileVersion major="1" minor="6" />
    	<Project>
    		<Option title="try" />
    		<Option pch_mode="2" />
    		<Option compiler="gcc" />
    		<Build>
    			<Target title="Debug">
    				<Option output="bin/Debug/try" prefix_auto="1" extension_auto="1" />
    				<Option object_output="obj/Debug/" />
    				<Option type="1" />
    				<Option compiler="gcc" />
    				<Compiler>
    					<Add option="-g" />
    				</Compiler>
    			</Target>
    			<Target title="Release">
    				<Option output="bin/Release/try" prefix_auto="1" extension_auto="1" />
    				<Option object_output="obj/Release/" />
    				<Option type="0" />
    				<Option compiler="gcc" />
    				<Compiler>
    					<Add option="-O2" />
    				</Compiler>
    				<Linker>
    					<Add option="-s" />
    				</Linker>
    			</Target>
    		</Build>
    		<Compiler>
    			<Add option="-Wall" />
    			<Add directory="$(#sdl.include)" />
    		</Compiler>
    		<Linker>
    			<Add library="SDL" />
    			<Add library="SDL_image" />
    		</Linker>
    		<Unit filename="main.c">
    			<Option compilerVar="CC" />
    		</Unit>
    		<Extensions>
    			<code_completion />
    			<debugger />
    		</Extensions>
    	</Project>
    </CodeBlocks_project_file>

  7. #7
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    J'ai essayé ton fichier .cbp et j'ai une la même erreur pour SDL tout court cette fois ^^'
    cannot find -lSDL

    Je commence à ne rien comprendre ...
    Maintenant même les appels à la SDL de base ne marche plus.
    Ca doit être du au fait que la création d'un projet SDL avec le template C::B par défaut ne configure pas la recherche des librairies comme on le fait nous quand on modifie manuellement le .cbp
    Omnes Vulnerant Ultima Necat
    Bye

  8. #8
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Ok ok, j'ai trouvé !
    Désolé d'avance pour le double post mais la subtilité de l'erreur me paraît le justifier...
    Enfait, l'erreur ne vient pas du linker même si c'est à ce moment là que l'erreur apparaît, c'est d'ailleurs ça qui m'a donné du fil à retordre.
    Enfait le linker trouver bien le .lib SDL_Image, ou quand bien même ce ne serait pas le cas on y arrive avec un peu de bricolage.
    La vraie fourberie se trouve dans le fait que le .lib n'était pas le bon.
    Lorsqu'on télécharge le pack sur le site officiel de la SDL comme moi on tombe sur un dossier zip et les .lib et les .dll sont déclinés en deux exemplaires, dans deux dossier un x86 et x64, il faut prendre ceux du x86 (du moins pour windows 7) et j'avais pris les autres, d'où l'erreur .

    Bref merci à toi d'avoir essayé de m'aider !
    J’espère que d'autres ne tomberont pas dans le même piège que moi :p
    Omnes Vulnerant Ultima Necat
    Bye

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de linker avec bibliothèque PTHREAD
    Par krossark dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 28/01/2010, 14h58
  2. Réponses: 10
    Dernier message: 17/08/2009, 12h39
  3. Problème de linker avec ld
    Par Keweed dans le forum C++
    Réponses: 12
    Dernier message: 09/12/2008, 00h19
  4. problème de compilation avec SDL_image
    Par boumbim dans le forum Code::Blocks
    Réponses: 7
    Dernier message: 17/01/2007, 09h32
  5. [Debutant] Problème du linker [Dev-c++4]
    Par Macdir dans le forum Dev-C++
    Réponses: 3
    Dernier message: 30/05/2003, 20h50

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