Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de : SDL | Pointeur | Tableau | Linking

un malloc(en tableau) de SDL_Surface (pointeur)

Sujet résolu
    28 mai 2006 à 15:34:07

    Plop,
    j'ai deux petit problème, probablement liés.
    Premièrement, une erreur de linkage que je comprend pas du tout, je suis sur xCode pour mac (normal ;)) et je n'ai pas cette erreur de linkage quand j'enlève le code de mon deuxième problème (voir plus bas), je suis un peut frustré de ne pas pouvoir en dire plus :

    ld: warning prebinding disabled because (__TEXT segment (address = 0x9291a000 size = 0x237000) of /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation overlaps with __TEXT segment (address = 0x92a9d000 size = 0x3a7000) of /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics

    ld: warning prebinding disabled because (__TEXT segment (address = 0x9027f000 size = 0xd7000) of /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation overlaps with __TEXT segment (address = 0x90284000 size = 0xde000) of /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS

    ld: warning prebinding disabled because (__DATA segment (address = 0xa027f000 size = 0xa000) of /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation overlaps with __DATA segment (address = 0xa0284000 size = 0x5000) of /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS

    ld: warning prebinding disabled because (__TEXT segment (address = 0x910c6000 size = 0x87000) of /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit overlaps with __TEXT segment (address = 0x910da000 size = 0xb2000) of /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD

    ld: warning prebinding disabled because (__TEXT segment (address = 0x91182000 size = 0x21000) of /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata overlaps with __TEXT segment (address = 0x910da000 size = 0xb2000) of /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD



    Deuxième erreur, j'ai fais un SDL_Surface, je l'ai défini en temps que malloc, et c'est au malloc que ca cale, Sachant que c'est certainement une erreur de pointeur, je n'ai rien trouver, je sèche.
    Voici le code :
    SDL_Surface **sprites_terrain = NULL; // Un Pointeur de Pointeur de SDL_Surface, l'erreur dois ce trouvée ici.
    sprites_terrain = malloc(nombreSprites("terrains") * sizeof(SDL_Surface)); // Ici un malloc qui a pour but de définir un tableau de SDL_Surface, la fonction nombreSprites() fonctionne très bien, le problème n'est pas la mais le warning s'affiche ici.
    remplissageSprites("terrains", sprites_terrain); // Une fonction qui devrais marcher si mon tableau sprites_terrain fonctionne.



    L'erreur :
    game.c:57: warning: implicit declaration of function `malloc'
    game.c:57: warning: assignment makes pointer from integer without a cast
    game.c:377: warning: implicit declaration of function `free'


    J'ai relu et relu les tutos sur les pointeurs, j'ai cherché partout, mais j'ai rien trouvé, et je sens que c'est un bête truc :/
    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      28 mai 2006 à 17:33:08

      Quand tu utilise une surface en faisant par exemple :
      SDL_Surface *image

      Ta 'variable' image est un pointeur.
      Tu ne doit donc pas allouer n fois la taille d'un SDL_Surface mais n fois la taille d'un pointeur sur SDL_Surface. L'erreur viens de là. L'erreur est donc bien dans ton malloc, contrairement à ce que tu croyais.

      A+
      • Partager sur Facebook
      • Partager sur Twitter
        29 mai 2006 à 20:09:13

        Ok merci, et comment fais-je pour déclarer un malloc avec un sizeof(SDL_Surface) en pointeur ?
        Pour ce que est de mon SDL_Surface **sprites_terrain = NULL; je laisse comme cela ?

        En tout cas merci d'avance ;)
        • Partager sur Facebook
        • Partager sur Twitter
          29 mai 2006 à 21:07:21

          Bah, pour déclarer un pointeur de pointeur, tu réfléchis trentes secondes :

          SDL_Surface** ton_tableau_d_images = malloc(50 * sizeof(SDL_Surface*));


          Faut juste lui dire de pointer vers des pointeurs de SDL_Surface quoi... Il y avait déjà un topic sur ce sujet sur le forum (c'est moi qui l'avait créer ^^ , mais on va dire que le module recherche est pas très pratique ^^ )

          Pour l'erreur de link, j'en sais trop rien, mais je pense que tu n'as pas inclut <stdlib.h> sinon malloc ne serais pas déclaré implicitement.

          Bon aller, bon courage !
          • Partager sur Facebook
          • Partager sur Twitter
            30 mai 2006 à 13:20:41

            J'avais réfléchis 30 secondes :p
            j'ai essayé, même conclusion que toi ;) mais marche pas :(
            Sinon effectivement j'ai fais des recherches sur le forum mais pas sur google et j'aurais du (enfin j'en ai fais mais je n'ai pas eu directement le réflex..) :(
            Pour stdlib.h, je ne sais pas si je l'ai inclus, je suis a l'école et je n'ai pas acces a mon code ;)
            Je vais essayé ca directement quand je rentrerai ;-)

            Pour utiliser le malloc de SDL_Surface il suffit juste de faire :
            variable[x] = SDL_LoadBMP("x.bmp"); ?
            Enfin bon, je testerai tout ca quand je serai chez moi ;)

            Merci encore

            edit : Je suis rentré chez moi, j'ai inclus les stdio et stdlib et maintenant ca marche :D
            Merci, c'était une bête erreur, mais le sizeof(pointeur *) je n'y aurais pas pensé tout seul ;)
            Encore merci ! :p
            PS : Le problème de linkage est toujours la :(
            Edit 2 : J'ai réglé tout les problemes ;) merci :p
            • Partager sur Facebook
            • Partager sur Twitter
              30 mai 2006 à 21:05:05

              De rien.

              Met le problème en résolu !

              A+ bonne continuation
              • Partager sur Facebook
              • Partager sur Twitter
                31 mai 2006 à 13:13:20

                Ouai désolé j'avais oublié ;)
                Encore merci !
                • Partager sur Facebook
                • Partager sur Twitter

                Probleme de : SDL | Pointeur | Tableau | Linking

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown