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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    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

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    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
    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

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    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
    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...

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    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>

+ 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