Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compatibilité bibliotheques C++/C

Trouver et include une biblitheque

Sujet résolu
    8 avril 2021 à 13:01:27

    Bonjour,

    Je viens de finir le cour "Apprenez a programmer en C" et pur m’entraîner je souhaite développer un bot Twitter.

    Le problème est que je ne trouve que des bibliothèques en C++( a me demander si je n’aurais pas du choisir le c++).

    J'ai vue que l'ont pouvait les utiliser dans du code en C, mais je ne comprend pas très bien comment cela fonctionne et si je doit apprendre le C++ pour pouvoir m'en servir.

    J'ai cru comprendre qu'il fallait inclure ceci dans mon code ?

    extern "C" {
    #include "blabla.h"
    #include "truc.h"
    }

    Par exemple, sur la page développeur de Twitter j'ai trouver cette librairie https://github.com/a-n-t-h-o-n-y/Twitter-API-C-Library, mais comment je peut savoir si elle est compatible avec le C  ?

    Merci d’avance a ceux qui m'aideront.

    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2021 à 13:30:39

      pzkk a écrit:

      Bonjour,

      Je viens de finir le cour "Apprenez a programmer en C" et pur m’entraîner je souhaite développer un bot Twitter.

      [...]

      Bonjour :)

      Alors comment te dire … quand je lis «Je viens de finir le cour "Apprenez a programmer en C"» je me dis «ah cool !» mais quand je vois la suite : «et pour m’entraîner je souhaite développer un bot Twitter.» je me sens un peu comme face à une personne qui me dirais «bon je sais manipuler une clé de 12 et un rouleau à pâtisserie, maintenant j'aimerai pour m'entraîner démonter et remonter un moteur de voiture».

      En te lisant je comprends que :

      • tu ne savais pas du tout programmer, tu as appris avec le cours C ici ; pardon tu as commencé à apprendre ici …
      • tu avais déjà dans l'idée de créer au départ un programme de ce genre ;
      • tu n'as aucune idée de comment une authentification fonctionne, ni comment ça se passe dans les coulisses de twitter.

      Donc plusieurs choses :

      si tu sais que tu va devoir utiliser un service externe comme twitter, regarde ce twitter propose comme outil → https://developer.twitter.com/en/docs/twitter-api/tools-and-libraries 

      Tu vois, en suivant le lien, qu'officiellement il y a JS, Python et Ruby qui sont supportés mais que la communauté des utilisateurs développe indépendamment de twitter des outils en .Net, C++, Clojure, …, typescript (waouh … même en Bash … 😲). Si tu avais demandé conseil, je pense que la facilité d'utilisation et d'apprentissage de Python nous auraient amené à te le conseiller.

      Maintenant, si tu te sens capable d'affronter les affres de créer un binding C pour une bibliothèque (ouaips, librairie/y c'est un anglicisme) écrite en C++ vas-y … mais c'est un sacré boulot. Remarque, tu peux forker le projet pour l'améliorer et c'est dans l'esprit FOSS.

      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2021 à 14:10:31

        Oui effectivement je débute en programmation, j'ai choisi le C car c'est un langage bas niveau, et que je souhaitais pour commencer me fonder de bonnes bases, et ce qui ressortez souvent sur les forum étais que a peu prés tout pouvez êtres fait en C.

        Ironiquement je penser que de me lancer dans la création d'un bot Twitter serais un exercice a porter de main mais avec un peu de challenge pour pouvoir continuer a apprendre, car c'est un peu le problème en fin de cours, on ne sait pas vraiment  dans quel projet se lancer pour pouvoir continuer l'apprentissage.

        Et oui, je suis allez sur la page développeur de Twitter, c'est d’ailleurs las bas que j'y est trouver le lien de la bibliothèque dont je parle.

        Donc utiliser une bibliothèque C++ dans un programme en C n'est pas si évident que ça ? Car j'ai l'impression que la majorité des bibliothèque sont en C++, ce qui ne facilite pas la tache.

        En conclusion, je devrais (au moins pour l'instant) me tourner vers un projet plus approprié a mon niveau ou en faisant des recherches je devrais m'en sortir ?

        -
        Edité par pzkk 8 avril 2021 à 14:11:27

        • Partager sur Facebook
        • Partager sur Twitter
          8 avril 2021 à 18:04:37

          En fait beaucoup de librairies sont écrites en C, car l'ABI est stable. Et pas mal de librairies C++ proposent aussi une interface C.

          On peut utiliser une librairie C++ en C, il faut juste s'écrire un wrapper s'il n'est pas déjà fourni dans la librairie. En tapant "C wrapper for C++ library" dans ton moteur de recherche préféré, tu trouveras des squelettes classiques pour gérer cela. Bien entendu, si tu n'y connais rien en C++ ce sera un peu obscur.

          Disons que pour faire simple, ton wrapper sera constitué d'un header avec les déclarations de ton interface C, et d'un fichier source avec les définitions cette interface (obligatoirement en C++). Ce dernier fichier source est le vrai pont entre ton interface C et la librairie C++.

          • Partager sur Facebook
          • Partager sur Twitter
            8 avril 2021 à 20:24:14

            Si tes besoins sont limités, tu n'as pas à créer un binding C pour une bibliothèque C++ existante.

            L'API de Twitter utilise une authentification OAuth 2.0 ou OAuth 1.0 selon les cas. Tu peux utiliser des bibliothèques C existantes qui gèrent cela:

            https://sourceforge.net/projects/liboauth/

            https://github.com/babelouest/iddawc/releases/tag/v0.9.9

            Ensuite, il te faudra pouvoir gérer des requêtes GET et POST à un serveur HTTP. Pour cela, tu peux utiliser libcurl ou une autre bibliothèque

            https://curl.se/libcurl/

            Comme les requêtes restituent des résultats en JSON, tu peux aussi utiliser une bibliothèque comme json-c pour te faciliter la vie

            https://github.com/json-c/json-c

            ou tu peux parser le résultat toi même...

            Tu peux faire tout cela en C et ce n'est pas insurmontable pur un programmeur (expérimenté) si tu ne veux utiliser qu'une partie de l'API de Twitter.

            Tu peux trouver la fonction qui y t'intéresse, voir comment elle fonctionne et ce qu'elle retourne dans la doc. Par exempe :

            https://developer.twitter.com/en/docs/twitter-api/tweets/filtered-stream/api-reference/get-tweets-search-stream

            outre la description, ils ont bien fait les choses, et tu peux cliquer sur "Run in Postman" et voir comment est composée une requête CURL et ce qu'elle retourne.

            Par contre, si tu es débutant, il y a de chances les différentes notions évoquées ci-dessus ne te soient pas familières et tu devrais commencer par te renseigner dessus.

            Ensuite, par exemple, si tu ne l'as jamais fait, tu pourrais (par ordre de difficulté) :

            • commencer par créer un programme utilisant libcurl et faisant une simple requête GET,
            • passer ensuite à POST
            • installer json-c et décoder du JSON retourné par une requête HTTP non authentifiée
            • ensuite passer à OAuth, qui n'est pas simple et tenter de t'authentifier sur l'API Twitter, etc.

            -
            Edité par Dlks 8 avril 2021 à 20:25:44

            • Partager sur Facebook
            • Partager sur Twitter
              8 avril 2021 à 21:39:43

              Bon les gars, je ne veux pas être pessimiste mais :

              pzkk a écrit:

              Bonjour,

              Je viens de finir le cour "Apprenez a programmer en C" et pur m’entraîner je souhaite développer un bot Twitter.

              ...

              pzkk a écrit:

              ...

              En conclusion, je devrais (au moins pour l'instant) me tourner vers un projet plus approprié a mon niveau ou en faisant des recherches je devrais m'en sortir ?

              -
              Edité par pzkk il y a environ 7 heures

              Non, je ne pense pas que même en faisant des recherches tu pourrais t'en sortir en ayant juste fini le cour et en n'ayant rien appris de plus …
              Non seulement parce que tu ne connais pas l'environnement de développement (debuger, profiler, linker, étape de la compilation, modèle mémoire, …) mais aussi parce que faire des programmes en C c'est pas savoir programmer. Il y a la partie chiante … apprendre les techniques et algos de base.
              • Partager sur Facebook
              • Partager sur Twitter
                9 avril 2021 à 10:06:29

                Salut, je te conseille de passer par du JavaScript et des frameworks comme React, il y a un tuto intéressant ici
                • Partager sur Facebook
                • Partager sur Twitter
                  9 avril 2021 à 18:01:27

                  Merci a tous pour vos réponses, je pense que je vais essayer même si ça risque de me prendre du temps et que je ne suis pas sur d'y arriver ça me fera un objectif a atteindre.

                  Dlks a écrit:
                  • commencer par créer un programme utilisant libcurl et faisant une simple requête GET,
                  • passer ensuite à POST
                  • installer json-c et décoder du JSON retourné par une requête HTTP non authentifiée
                  • ensuite passer à OAuth, qui n'est pas simple et tenter de t'authentifier sur l'API Twitter, etc

                  Je vais allez me renseigner sur toutes ses choses et d'y allez pas a pas en essayant des choses simple, et je vais aussi continuer a apprendre le C de manière général.

                  Avant de clore le sujet es-que vous auriez une idée de ce a quoi je devrait m’intéressez pour continuer mon apprentissage, car a la fin du cours "Apprenez a programmer en C" on est un peu livré a nous même, sans trop savoir quoi faire après, on nous propose seulement pour continuer de suivre le cour en C++ mais je préfère rester en C pour éviter de m’éparpiller. Donc si vous pensez a des sujets que je devrez étudier et/ou des ressources pour cela ça serait sympas !

                  J'ai vue que l'ont pouvait trouver les sujets de cours de l’école 42 sur github, peut être que essayer de faire les exercices serait une bonne idée pour commencer ?

                  -
                  Edité par pzkk 9 avril 2021 à 18:06:23

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 avril 2021 à 18:32:30

                    Faire un projet à toi est une bonne idée car tu seras motivé par ton propre intérêt.

                    Il faut qu'il reste à ta portée, pour ne pas te décourager, et donc tu ne devrais pas être trop ambitieux pour un premier projet personnel.

                    Par exemple, en faisant "commencer par créer un programme utilisant libcurl et faisant une simple requête GET", tu pourras réaliser un programme qui récupère le code html d'une page Web (par exemple ta page Twitter) et qui retourne le nombre de "Followers" qui y figure.

                    Au passage tu auras appris à installer et faire une utilisation de base de libcurl, et tu auras appris à parser une page Web (au moins avec les moyens du bord offerts par le C : strstr() et cie) et en récupérer un contenu utilisable par ton programme.

                    -
                    Edité par Dlks 9 avril 2021 à 18:33:59

                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 avril 2021 à 22:29:45

                      déjà commencer à tester un site comme France IOI c'est une bonne idée à mon avis (surtout si tu viens de finir le cours C d'ici … 😵‍💫

                      http://www.france-ioi.org/algo/chapters.php?progression=1 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 avril 2021 à 21:51:29

                        Désoler de répondre 2 jours plus tard je n'avais pas vue les réponses.

                        D’accord je vais allez voir tout ça, Merci pour vos réponses ça ma beaucoup aidé. j'ai eu toutes les réponses a mes questions, je clôture le sujet.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Compatibilité bibliotheques C++/C

                        × 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