Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer une libraire ?

Comment faire?

Anonyme
    28 mai 2006 à 19:35:48

    Bonjour les zéros,

    Je voulais savoir si c'était possible de créer soi même une librairie, et comment en créer ?
    Par exemple, comment a été créé la SDL ? En assembler ?
    Enfin bon, je voudrait tout savoir sur la création des librairies

    Je compte sur vous, fidèlement

    Un ami zéro :)
    • Partager sur Facebook
    • Partager sur Twitter
      28 mai 2006 à 19:42:41

      Pour créer une lib c'est pas bien compliqué tu la fait dans le langage que tu veux, exemple tu veux une lib pour ton programme ecrit en C ben tu l'écrit en C. Bon quand tu a ton langage c'est pas trop compliqué enfin je croi, pour creer des fichier *.a tu prend ton IDE par exemple dev-C++ et tu choisi static librairie, tu tape code avec toute les fonctions, tu créer un fichier *.h et ensuite du compil enfin tu appuye sur le bouton reconstruire. L'IDE va compilé et va te générer un fichier *.a et voila c'est pas plus compliqué que ca. Mais si tu veux faire un *.dll je ne peu pas d'aider
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        28 mai 2006 à 19:53:03

        Citation : acieroid

        Par exemple, comment a été créé la SDL ? En assembler ?


        Pas besoin d'aller si loin ! En C ça amrche très bien. J'en ai jamais faite mais il me semble que ce n'est pas très compliqué, dark-lord a dit ce qu'il faut : tu crées les fonctions, pas de main, tu compiles le tout (en tant que static ou dynamic library je pense) et voilà, tu as des .o que tu peux regrouper en .a, ou .dll

        Après, il suffit d'inclure les .h et de linker et ça roule ^^
        • Partager sur Facebook
        • Partager sur Twitter
          28 mai 2006 à 19:55:38

          Ecris ton code, fais passer le préprocesseur, compile, puis linke les .o obtenus entre eux. C'est tout.

          A noter qu'il existe une différence cruciale entre un fichier d'en-tête (header), une bibliothèque (library, ensemble de fichier d'en-tête) et une librairie (endroit où on range des bouquins :p ).

          [grillé]
          • Partager sur Facebook
          • Partager sur Twitter
            29 mai 2006 à 1:28:37

            Citation : mleg

            A noter qu'il existe une différence cruciale entre un fichier d'en-tête (header), une bibliothèque (library, ensemble de fichier d'en-tête)


            What ? Une bibliothèque n'est certainement pas un "ensemble de fichier d'en-tête".

            Certaines conceptions erronée ont la peau dure.

            Une bibliothèque de fonctions est une collection de fonctions formée d'une interface (fichiers d'entêtes publiques) et d'une implémentation (fichier regroupant l'ensemble des fonctions exécutable).

            http://mapage.noos.fr/emdel/notes.htm#bibliotheque
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              29 mai 2006 à 18:38:24

              Moi je me suis toujours posé la question de "Pourquoi les librairies ont à la fois des *.a et *.dll ?"
              • Partager sur Facebook
              • Partager sur Twitter
                29 mai 2006 à 20:56:18

                parce que les .a c'est des librairie statique et les .dll est des librairie dynamique xd mais je peu pas t'expliqué la diférence entre les deux je sait juste que ca existe :)
                • Partager sur Facebook
                • Partager sur Twitter
                  29 mai 2006 à 21:48:23

                  merci... j'ai pas demandé ce que voulais dire "*.a" et "*.dll" :-° . Juste que si on utilise un librairie dynamique qui contient les fonctions utilisé, à quoi sert la librairie statique ? Que contient-elle ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 mai 2006 à 21:50:08

                    La différence est très simpple:
                    quand tu utilise une dll, elle se linke avec un fichier .a aussi(ou .lib) . Simplement le code est contenu dans la dll et le .a n'est là que pour dire qu'est-ce qu'il faut linker et éventuellement à quelle addresse .
                    On les appèle libraries dynamiques car l'OS charge et link dynamiquement l'exe à la dll lors de l'exécution .

                    Quand tu utilise un .a tout seul(cad sans dll), alors le code est contenu dans le fichier .a . On dit que l'on linker alors statiquement car le code de librarie sera contenu dans l'executable contrairement au dll .

                    Voilà donc pour résumer:
                    -librarie dynamique(sous win)=.dll + .a(ou .lib pour visual borland et d'autres)
                    -librarie statique: .a(ou .lib pour visual borland et d'autres)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 mai 2006 à 0:06:00

                      Citation : Dragh'nalith

                      merci... j'ai pas demandé ce que voulais dire "*.a" et "*.dll" :-° . Juste que si on utilise un librairie dynamique qui contient les fonctions utilisé, à quoi sert la librairie statique ? Que contient-elle ?


                      Déjà répondu

                      http://www.siteduzero.com/forum-83-44707-351101.html#r351101

                      Il y a un lien ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Music only !
                        30 mai 2006 à 7:29:46

                        En ce qui concerne la création de librairie dynamique, sous windows, c'est une vraie calamitée (faut passer par des programmes externes, gcc fait pas ca directmen, bref un bordel :p).
                        Et sous windows, ya une fonction main, DllMain () qui est apellé (si j'ai bien compris) quand la dll est attachée/détachée à un thread.

                        (sinon sous linux il suffit de compiler avec -shared, sans rien modifier )

                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 mai 2006 à 8:44:57

                          Citation : asmanur

                          En ce qui concerne la création de librairie dynamique, sous windows, c'est une vraie calamitée


                          Sous Dev-C++ et Code::Blocks, il y a un patron de projet 'DLL' tout prêt...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            31 mai 2006 à 7:28:05

                            Citation : -ed-

                            Citation : asmanur

                            En ce qui concerne la création de librairie dynamique, sous windows, c'est une vraie calamitée


                            Sous Dev-C++ et Code::Blocks, il y a un patron de projet 'DLL' tout prêt...


                            Je sais, mais sous linux ya ça aussi . On peut tout faire avec un IDE, à ce compte là tout est facile.
                            Si tu regardes le makefile d'une dll tu trouveras pas beaucoup de gcc ^^
                            (c'est pour ça que sous windows, pour faire ça c'est impossible de se passer d'un IDE :/)
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              31 mai 2006 à 11:32:17

                              Si, j'ai réussi une fois, j'ai piqué le makefile, je me suis documenté 3 heurs sur msdn et j'ai réussi à mettre dans la Dll ceci
                              void func(void)
                              {
                                  printf("Hello!\n");
                              }

                              avec le dllimport et tutti quanti et ravioli bien sûr
                              mais ça va plus vite vec l'IDE ^^
                              • Partager sur Facebook
                              • Partager sur Twitter
                                31 mai 2006 à 17:05:26

                                Si ça peut aider, j'ai une intro qui date un peu sur mon site : http://www.xgarreau.org/aide/devel/libclinux/intro.php

                                a+
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  31 mai 2006 à 17:06:21

                                  Mouais, mais c'est du linux dlopen et le reste
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    31 mai 2006 à 18:08:56

                                    La différence entre statique et dynamique est la même. Et ce n'est pas le fait d'utiliser dlopen plutôt que LoadLibrary qui change le raisonnement.

                                    Le raisonnement est appuyé par un exemple. Toi tu lis ça à l'envers, en partant de l'exemple pour construire le raisonnement. C'est mal :)

                                    T'en voilà avec des fonctions windows: http://www.xgarreau.org/aide/devel/dll/

                                    (mouais, c'est du visual ;) )

                                    a+
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      1 juin 2006 à 8:42:06

                                      Oui bon d'accord le raisonnement est le même ^^
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        10 juin 2006 à 20:29:19

                                        Mais pratiquement, comment faire pour créer une DLL et la lier...
                                        Est-ce qu' il faut simplement déclarer les fonctions extern ou faut-il faire autre chose.
                                        Comment faire pour les exporter et les importer
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme

                                        Créer une libraire ?

                                        × 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