Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ranger les .dll dans un autre dossier ?

Sous code::blocks ?

    23 juin 2009 à 18:55:38

    Bonjour !
    Je me demandais si il y avait moyen de ranger dans un dossier les .dll de mon programme, histoire de pas trop encombrer le dossier de jeu ?

    Si c'est possible, quelle est la marche à suivre pour ça avec Code::Blocks ?
    Merci d'avance, et bonnes vacances !!!
    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2009 à 19:44:50

      salut, ça devrais être comme avec les fichier non ?
      ...(dossier/fichier.dll"...
      

      Je dit ça comme ça, mais je ne suis pas sûr ;)
      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2009 à 20:15:06

        Oui, c'est bien ça, mais comment je fais pour que Code::Blocks sache au moment de la compilation qu j'ai justement rangé mes dll dans PROGRAMME/DLL au lieu de dans PROGRAMME/ ?

        (Je ne sais pas comment lui indiquer le chemin pour accéder aux dll, du coup je suis forcé de ranger dans mon dossier "mère", et c'est moche)

        Merci d'avance
        • Partager sur Facebook
        • Partager sur Twitter
          23 juin 2009 à 21:15:33

          Quand tu accède a une DLL, tu doit lui indiquer son répertoire afin que le programme puisse l'ouvrir et ensuite l'utiliser. Au moment de l'ouverture, tu donne le répertoire, ici PROGRAMME/DLL/taDLL.dll

          PS : je ne manipule pas encore les dll, mais ça doit être comme pour n'importe quel fichier :

          1. ouverture
          2. test de l'ouverture
          3. lecture/écriture
          4. fermeture
          • Partager sur Facebook
          • Partager sur Twitter
            23 juin 2009 à 21:37:44

            Oui, mais justement, je n'y accède pas moi même, ce n'est pas comme les fichiers.
            C'est automatisé par Code::Blocks, et le répertoire par défaut est le dossier "mère".

            J'aurais du mieux m'expliquer.
            • Partager sur Facebook
            • Partager sur Twitter
              23 juin 2009 à 21:47:53

              AH, je comprend maintenant, dans ce cas je vois pas, à part changer d'IDE ^^ .

              Désolé, je vois pas.
              • Partager sur Facebook
              • Partager sur Twitter
                24 juin 2009 à 15:00:17

                Personne d'autre n'a d'idée ?
                Parce que je me vois mal changer d'IDE...
                • Partager sur Facebook
                • Partager sur Twitter
                  24 juin 2009 à 16:25:46

                  Changer d'IDE :o
                  Ça doit être quelque part dans les options de compilation. Je fait quelques tests et je te dit si j'ai trouvé.

                  edit: mmmh, en fait j'ai du mettre les dlls dans les ressources système par grosse flemme parce que même en enlevant les dll de mon dossier ça fonctionne...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 juin 2009 à 16:38:47

                    salut ,
                    une fois j'ai posé la même question , on ma répondu que c'était pas possible , méme les gros programme commerciale ne rangent pas leurs dll moteurs dans un dossier ,si tu trouve je suis preneur aussi ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 juin 2009 à 18:51:57

                      J'ai un peu fouiné dans google, on m'a dit qu'il fallait compiler en Static au lieu d'en Shared, mais que le programme péserait plus lourd.

                      Le problème ?
                      J'ai aucune idée de ce que peuvent être static et shared...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 juin 2009 à 3:18:37

                        bah demande a celui qui te la dit !
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 juin 2009 à 5:28:00

                          Les libs existent en 2 formats:
                          - partagées (shared)
                          - statiques

                          Les libs dynamiques(partagées) sont les DLL que vous connaissez, ou les .so sous unix. Toute une partie du code est contenue dans ces DLL et y restera tout le temps. Pour appeler des bouts de code de ces "mini executables" il faut tout d'abord que l'OS les charge et repère les symboles utilisables (en gros quelles fonctions sont montrées aux utilisateurs de DLL). Par défaut, Windows regarde 2 endroits (peut-être 3 j'ai un doute) pour charger les DLL avant de lancer vos programmes: system32 (toutes les DLLs généralistes de Windows sont dedans) et le répertoire courrant de l'executable. (la 3° possibilité serait issue d'une variable d'environnement)
                          On ne peut donc pas séparer l'executable de ses DLL facilement.

                          Les libs statiques quant-à elles, ne sont pas chargeables ou accessibles comme ça. On peut les considérer comme un état intermédiaire entre le code et l'executable. Lorsque l'on va compiler un programme utilisant une lib partagée, tout le code de cette lib ira donc dans l'executable au moment de la compilation.

                          Pourquoi utiliser des DLL? Tout simplement parceque si l'interface de cette DLL ne change pas (ses symboles), on est pas obligé de recompiler tout le programme pour faire une modification qui n'affecte que la DLL en question.

                          Note: pour les programmeurs plus avancés, il est possible de cahrger à la volée des symboles d'une DLL (donc en cours d'execution) et il est possible de spécifier le chemin vers cette DLL. C'est de cette façon que l'on conçoit des plugins notemment. (regarder LoadLibrary pour Windows)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 juin 2009 à 8:29:32

                            Avec gcc (dans le dossier du projet):
                            gcc obj/main.o -o bin/exec shared/libMACHIN.so

                            gcc obj/main.o -o bin/exec usr/lib/libMACHIN.so

                            ou (dans le dossier de l'exec)
                            gcc ../obj/main.o -o exec ../shared/libMACHIN.so


                            Avec Code::Blocks : Project , Build Option ,Linker settings ,Other linker option ; il faut mettre le chemin du fichier
                            Image utilisateur
                            '#' signifie ne pas prendre en compte la ligne.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 juillet 2009 à 18:22:15

                              Merci a vous pour ces explications, mais...

                              Au risque de passer pour une banane ...
                              Les .so sont pour Unix, mais si je suis sous Windows avec Code::Blocks, je fais comme explique Seldok, mais en remplaçant la partie ou il parque .so par .dll ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 juillet 2009 à 20:35:03

                                Citation

                                Les libs statiques sont les DLL que vous connaissez, ou les .so sous unix.


                                Bah non c'est l'inverse, une lib statique c'est un .a ou .lib.

                                Citation : roibakura

                                Merci a vous pour ces explications, mais...

                                Au risque de passer pour une banane ...
                                Les .so sont pour Unix, mais si je suis sous Windows avec Code::Blocks, je fais comme explique Seldok, mais en remplaçant la partie ou il parque .so par .dll ?


                                Non car le système de fichier de l'exemple est pour Linux, link en statique et c'est réglé.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 juillet 2009 à 18:26:59

                                  Bonjour,
                                  Je viens de lire les messages de ce topic, et le sujet m'intéresse. J'aurais donc une question.

                                  Quand on ouvre les dossiers d'un jeu (par exemple) qui utilise la SDL, et qu'on ne trouve pas de fichier .dll, cela veut-il dire qu'il a été linké en statique et intégré dans le .exe ?

                                  Merci d'avance pour vos réponses.

                                  EDIT: Laissez tomber, je viens de trouver une réponse très claire dans un autre topic. (J'aurais dû chercher avant...)

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 juillet 2009 à 22:42:51

                                    Toujours au risque de passer pour une banane, quand je choisis "Static Librairy" et que je compile, j'obtiens le message d'erreur suivant: "You must select a host application to run the library".

                                    Et je n'ai aucune idée de comment choisir une application hôte pour exécuter ma librairie.

                                    Aide ? :-°
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 juillet 2009 à 11:24:42

                                      Citation : roibakura

                                      Toujours au risque de passer pour une banane, quand je choisis "Static Librairy" et que je compile, j'obtiens le message d'erreur suivant: "You must select a host application to run the library".

                                      Et je n'ai aucune idée de comment choisir une application hôte pour exécuter ma librairie.

                                      Aide ? :-°


                                      Tu n'essayerais quand même pas de compiler ton projet en static library :lol: ?
                                      Il faut que tu utilises les bibliothèques statique, si elles ne sont disponible qu'en dynamique, alors il faut recompiler la bibliothèque afin d'obtenir des bibliothèques statique (.a .lib).
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        5 juillet 2009 à 12:37:55

                                        >> Tu n'essayerais quand même pas de compiler ton projet en static library :lol: ?

                                        Ben si... :-° (J'suis une banane, c'est ça ?)

                                        Bon, et si j'utilise la SDL, comment je fais ?
                                        Je télécharge la source de la librairie, et je l'ajoute à l'exécutable ?

                                        [Explique moi tout comme si j'étais un déficient mental.]

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          5 juillet 2009 à 13:16:44

                                          Citation

                                          Bon, et si j'utilise la SDL, comment je fais ?


                                          Le runtime de SDL est indispensable, donc t'es obligé de te trainer le SDL.dll.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            5 juillet 2009 à 14:51:27

                                            Et pas moyen d'au moins les ranger dans un sous dossier ?


                                            EDIT: J'entends par là: avoir un dossier "JEU" contenant les sous dossiers "images", "sons" "dll" et mon fichier executable.

                                            Au lieu d'avoir un dossier "JEU" contenant les sous dossiers "images" , "sons" et en fichier, l'exécutable, et mes 9 dll.
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Ranger les .dll dans un autre dossier ?

                                            × 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