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 :

[SDL2]CodeBlocks : impossible de compiler


Sujet :

SDL

  1. #1
    Membre averti
    Homme Profil pro
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Par défaut [SDL2]CodeBlocks : impossible de compiler
    Bonjour

    En reprenant mon projet un peu abandonné, j'ai eu la mauvaise surprise de voir ma licence Visual Studio expirer. Du coup, j'ai dû tout migrer vers CodeBlocks. Après avoir configuré correctement le projet en suivant les instructions à lettre, eu quelques problèmes et modifications à faire, je suis tombé sur ça :
    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
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x56): undefined reference to `_imp__timeBeginPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x69): undefined reference to `_imp__timeEndPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0xe0): undefined reference to `_imp__timeBeginPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0xe9): undefined reference to `_imp__timeGetTime@0'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x116): undefined reference to `_imp__timeEndPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x185): undefined reference to `_imp__timeEndPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x1cd): undefined reference to `_imp__timeGetTime@0'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x27f): undefined reference to `_imp__timeBeginPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x288): undefined reference to `_imp__timeGetTime@0'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x2d6): undefined reference to `_imp__timeEndPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x324): undefined reference to `_imp__timeGetTime@0'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x3d1): undefined reference to `_imp__timeBeginPeriod@4'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x3da): undefined reference to `_imp__timeGetTime@0'
    lib\libSDL2.a(SDL_systimer.o):SDL_systimer.c:(.text+0x424): undefined reference to `_imp__timeEndPeriod@4'
    lib\libSDL2.a(SDL_windows.o):SDL_windows.c:(.text+0xe9): undefined reference to `_imp__CoInitializeEx@8'
    lib\libSDL2.a(SDL_windows.o):SDL_windows.c:(.text+0x141): undefined reference to `_imp__CoUninitialize@0'
    lib\libSDL2.a(SDL_windowsmouse.o):SDL_windowsmouse.c:(.text+0x2f8): undefined reference to `_imp__CreateDIBSection@24'
    lib\libSDL2.a(SDL_windowsmouse.o):SDL_windowsmouse.c:(.text+0x325): undefined reference to `_imp__CreateBitmap@20'
    lib\libSDL2.a(SDL_windowsmouse.o):SDL_windowsmouse.c:(.text+0x37c): undefined reference to `_imp__DeleteObject@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x5e): undefined reference to `ImmGetIMEFileNameA@12'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xae): undefined reference to `ImmGetContext@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xda): undefined reference to `ImmReleaseContext@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x302): undefined reference to `ImmGetIMEFileNameA@12'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x4b6): undefined reference to `GetFileVersionInfoSizeA@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x50b): undefined reference to `GetFileVersionInfoA@16'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x561): undefined reference to `VerQueryValueA@16'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x8ef): undefined reference to `_imp__SysFreeString@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x9f4): undefined reference to `ImmGetContext@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xa21): undefined reference to `ImmNotifyIME@16'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xa52): undefined reference to `ImmNotifyIME@16'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xa64): undefined reference to `ImmReleaseContext@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xb13): undefined reference to `ImmAssociateContext@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xb4c): undefined reference to `ImmSetCompositionStringW@24'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xc82): undefined reference to `ImmGetContext@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xcaf): undefined reference to `ImmNotifyIME@16'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xce0): undefined reference to `ImmNotifyIME@16'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xcf2): undefined reference to `ImmReleaseContext@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xd8c): undefined reference to `ImmSetCompositionStringW@24'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xe71): undefined reference to `_imp__SysFreeString@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0xfd9): undefined reference to `_imp__SysFreeString@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x1278): undefined reference to `_imp__CoCreateInstance@20'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x1353): undefined reference to `ImmGetContext@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x1365): undefined reference to `ImmReleaseContext@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x1406): undefined reference to `_imp__CoCreateInstance@20'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x16fc): undefined reference to `ImmGetIMEFileNameA@12'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x1883): undefined reference to `GetFileVersionInfoSizeA@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x18d2): undefined reference to `GetFileVersionInfoA@16'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x193d): undefined reference to `ImmGetContext@4'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x1a0c): undefined reference to `ImmReleaseContext@8'
    lib\libSDL2.a(SDL_windowskeyboard.o):SDL_windowskeyboard.c:(.text+0x1a4e): undefined reference to `VerQueryValueA@16'
    En cherchant sur Google, je suis tombé sur ceci :
    Une erreur commune, provoquant l'apparition d'« undefined reference » malgré la bonne configuration du projet, est d'utiliser des bibliothèques 64 bits alors que le compilateur ne supporte que le 32 bits. En effet, certains compilateurs ne sont pas capables de gérer les formats 64 bits et donc ne les liront simplement pas (et ce bien que vous ayez un système d'exploitation 64 bits). Comme les fichiers de la bibliothèque ne sont pas lus, les fonctions définies dans le fichier ne seront pas reconnues, provoquant des erreurs de type « undefined reference ».
    Sauf que j'ai bien mis les includes et libs 32 bits. Du coup, qu'est ce que ça peut être ?

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    C'est l'erreur basique :
    - soit une incompatibilité 32 / 64 bits (qui à priori n'est pas ton cas)
    - soit des libs compilées avec un autre compilo (en passant de MSVC à GCC, tu as pensé à recompiler les libs avec GCC ?)
    - soit tout simplement une lib manquante

  3. #3
    Membre averti
    Homme Profil pro
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Hello,

    C'est l'erreur basique :
    - soit des libs compilées avec un autre compilo (en passant de MSVC à GCC, tu as pensé à recompiler les libs avec GCC ?)
    Pas fou, j'ai téléchargé la version minGW de SDL2 (ainsi que mixer et image), surtout que le format des lib n'est pas le même qu'avec ceux de VS.
    Citation Envoyé par Iradrille Voir le message
    - soit tout simplement une lib manquante
    Hum, normalement, je devrais avoir tout mis mais au cas où, j'affiche les liens du linkers et ce qui a dans mon fichier lib :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Linker
     
    libsdl2main.a
    libsdl2.a
    libsdl2.dll.a
    libsdl2_image.a
    libsdl2_image.dll.a
    libsdl2_mixer.a
    libsdl2_mixer.dll.a
    Tous les fichiers sont dedans plus un libsdl2test.a (dont j'ignore à quoi il sert).

  4. #4
    Membre averti
    Homme Profil pro
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Par défaut
    Bon, ça fait deux jours que j'essaie de faire marcher ce fichu code et je n'arrive toujours pas à me débarrasser de ces fichus erreurs de compilations (et ça ne se bouscule pas au portillon pour proposer des solutions). J'essaie diverses solutions mais elles échoue toutes. Je commence sérieusement à penser que Code Blocks est "de la merde" (bon, j'ai pu compiler un hello world pour vérifier) et prendre VS express pour ne plus me casser la tête.

    Edit : Bon, je me suis énervé pour rien. En fait, j'ai oublié de remplir la section "Other Linker Options" avec les -l... dans la partie linker setting. Heureusement que je suis allé voir sur le site du compilateur où il y avait un tuto pour mettre SDL dans Code Blocks.

    Désolé pour le coup de sang, affaire classé !

  5. #5
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut cone-block et winlope.
    Salut,

    comme en plus de code-block, tu utilise Windows mais je haie les deux enfin surtout la winlope.

    Je programme sous Linux et quand j'essaie de faire une version Windows ca donne ça.

    J'utilise un ITE (Integrated-Terminals-Editor) s'appelant IT-Edit, que j'ai développer moi même, comme je suis habituer a la ligne de commande ça me suffit et ça me convient parfaitement car j'ai développer it-edit selon mes propres besoins, car tout est embarqués:

    + Lecteur de manpages par le biais de la fonction "Launch a command in a Toplevel shell".

    + Enregistrement de fichiers de documentation de tout type: *.html, *.epub, *.pdf, ... car les fichiers enregistrer sont lancés avec le programme par défaut en fonction du type de fichier.

    + Un lanceur d'application.

    + Et une bonne implémentation du terminal qui me permet de compiler, debugger, profiler facilement par exemple me facilitant la tâche grâce a un Makefile.

    Avec toujours un terminal a portée de main, l'on tiens la puissance entre ses mains.
    Voici a quoi ressemble l'interface de it-edit:



    Sinon j'ai poster un template pour code-block Windows: Full SDL2 creation template for Code::Blocks.

    incluant:

    + SDL2

    + SDL2_image

    + SDL2_ttf

    + SDL2_mixer

    + SDL2_gfx

    + SDL2_gfxutils

    Et la documentation de:

    + SDL2_mixer

    + SDL2_gfx

    + SDL2_gfxutils

    (Je crois que celle de la SDL2 y est aussi faut voir).

    PS: Si tu est un de ces jeunes qui n'ont jamais pris le temps d'essayer vraiment Linux, car ils ne connaissent que Windows et pense que leurs programmes n'ont pas d'avenir sur cet extraordinaire O.S qu'est GNU/Linux.

    J'en suis désolé mais cela reste une supposition.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 6
    Par défaut error: expected ')' before string constant|
    Bonjour,
    Je suis débutant dans la programmation en et j'ai un problème.
    En effet après avoir rédiger un algorithme j'ai tenté de le traduire en C mais j'ai un problème pour compiler.


    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        float A,B,C,min;
     
     
        printf("valeur de A?");
        scanf ("%f",&A);
        printf("valeur de B?");
        scanf ("%f",&B);
        printf("valeur de C?");
        scanf ("%f",&C);
     
        if (A<B)
        {
            min=A;
        }
            else
            {
                min=B;
            }
        if (C<min)
        {
            min=C;
        }
        printf("la plus petite des trois valeurs saisies %f,%f,%f ",A,B,C "est" ,min,);
     
    return 0;
    }
    Voici le message d'erreur : error: expected ')' before string constant
    l'erreur se trouve dans cette ligne : printf("la plus petite des trois valeurs saisies %f,%f,%f ",A,B,C "est" ,min,);
    j'ai tout tenté pour résoudre mais en vin.

  7. #7
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut
    Salut le débutant en C,

    d'abord il faut mettre ton code sur le forum entre les balises \\[CODE][/CODE\\] que tu fait apparaître en cliquant sur le bouton '#' de l'interface de rédaction.

    Puis il me semble que l'erreur est effectivement dans ton printf() car tu concatène un float et un string ici ce que l'on ne peut faire si facilement en C car le C est un langage typé, il faudrai donc que que tu transforme ton float en chaîne de caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf(...,C "est" ,...)
    Car la variable C est de type float et tu ne sépare pas C de ton string \"est\" par une virgule puis tu met une virgule a la fin de ta liste d'arguments ce qui est incorrecte syntaxiquement .

    Puis tes caractères formateurs ne correspondent pas a la liste variadique d'arguments transmis a printf().

    La syntaxe correct est:

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
    float A,B,C,min;
     
     
    printf("valeur de A?");
    scanf ("%f",&A);
    printf("valeur de B?");
    scanf ("%f",&B);
    printf("valeur de C?");
    scanf ("%f",&C);
     
    if (A<B)
    {
    min=A;
    }
    else
    {
    min=B;
    }
    if (C<min)
    {
    min=C;
    }
    printf("la plus petite des trois valeurs saisies %f,%f,%f %s %f\n",A,B,C,"est",min) ;
     
    return 0;
    }
    PS: n'oublie pas le linefeed ("\n") a la finde printf() car la fonction ne revient pas a la ligne automatiquement.

    Bonne continuation et bon courage car le C est difficile a apprendre mais une fois que l'on a pris le coup et bien ça vaut le coup...

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

Discussions similaires

  1. [Codeblocks]Impossible de compiler et executer le code
    Par Jordinateur dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 13/04/2008, 19h14
  2. Jbuilder2006 impossible de compiler mon projet
    Par danje dans le forum JBuilder
    Réponses: 4
    Dernier message: 01/11/2005, 23h32
  3. [devc++]Impossible de compiler !!!
    Par insomniak dans le forum Dev-C++
    Réponses: 11
    Dernier message: 24/10/2005, 13h38
  4. [Dev-cpp] Impossible de compiler le projet !
    Par Franck.H dans le forum Dev-C++
    Réponses: 5
    Dernier message: 18/10/2005, 11h55
  5. [JOnAS][JOPE] impossible de compiler un bean
    Par Raylemon dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/04/2005, 16h48

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