|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() Apprenti Inscription : décembre 2010 Messages : 81 ![]() |
Bonjour,
suite à mon précédent message, j'ai cherché dans de multiples cours sur internet pour savoir comment ajouter et utiliser une librairie en C++. Et je n'ai pas trouvé. Par exemple, dans ce cours : http://sites.univ-provence.fr/cpp/V1/lecons.htm En particulier, j'ai vraiment besoin d'avoir un modèle (idéalement avec l'exemple du pgcd : je précise à nouveau, que je ne souhaite pas reprogrammer l'algo. pour trouver le pgcd mais mais utiliser une librairie existante afin de savoir comme ajouter et utiliser et librairie) Merci pour toute aide concrète. |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() ![]() Inscription : décembre 2008 Messages : 490 ![]() |
Généralement, c'est plutôt le distributeur de la librairie en question qui explique comment installer sa lib à lui. Exemple avec Boost, le couteau-suisse du C++ qui fournit pas mal de fonctions mathématiques :
1) Télécharge et extrait Boost dans c:\boost 2) Ajout le chemin « c:\boost» à ton projet Comment le faire dépendra de ton environnement de développement : Visual C++, Code::Blocks, Makefile ? 3) En te basant sur la doc, écrit un code de ce style : Code :
Comme souvent dans Boost il n'y a pas besoin de DLL "tierce", tout est compris dans les headers. Donc pas besoin d'informer ton linker sur des .LIB/.DLL supplémentaires (étape qui, là encore, dépend de ton EDD). |
||
|
|
00
|
|
|
#3 | |
![]() Apprenti Inscription : décembre 2010 Messages : 81 ![]() |
Je travaille sous linux. Dois-je alors adapter certaines choses en conséquence ?
Je travaille simplement avec gedit sous linux Pour préciser ma question, vous disiez dans votre message : Citation:
Merci d'avance. |
|
|
|
00
|
|
|
#4 | ||
![]() Apprenti Inscription : décembre 2010 Messages : 81 ![]() |
Pour comprendre comment utiliser la doc, Je tente d'utiliser la doc, et d' exécuter le programme qui y est proposé, c'est le suivant :
Code :
error: ‘boost’ has not been declared Je travaille avec gedit , donc à priori , je ne sais comment ajouter le lien de boost à mon petit projet. merci de votre aide. |
||
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Développeur C Inscription : août 2004 Messages : 2 078 ![]() |
tu dois ajouter le chemin de boost dans ton makefile
|
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() ![]() Inscription : décembre 2008 Messages : 490 ![]() |
ou un truc du genre.
Tu es sous Linux, tu as donc installé boost avec sudo apt-get install boost-dev ou quelque chose comme ça ? |
|
|
00
|
|
|
#7 |
![]() Apprenti Inscription : décembre 2010 Messages : 81 ![]() |
Bonjour,
en fait, je n'ai pas de Makefile. Pour tout vous dire(je ne sais pas s'il faut que je change ma façon de faire), j'ai recopié le fichier d'example que j'ai suffixé avec .cpp Ce fichier est sur le Bureau. Puis , comme suggéré dans le "fil", j'ai téléchargé "boost" sur le Bureau, je l'ai extrait sur le "Bureau". Et c'est alors que j'ai ouvert un terminal et j'écris : g++ nomdufichier.cpp et c'est alors que j'ai le message d'erreur que je viens de vous rappeler : "boost has not been declared" Que dois-je faire ? merci |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() ![]() Inscription : décembre 2008 Messages : 490 ![]() |
Lis la doc Boost pour savoir comment compiler/tester un exemple :
http://www.boost.org/doc/libs/1_52_0...-variants.html Et essaie plutôt d'installer Boost via ton gestionnaire de paquets, comme ce n'est pas dit très explicitement dans la doc. |
|
|
00
|
|
|
#9 | ||||
![]() Apprenti Inscription : décembre 2010 Messages : 81 ![]() |
Lorsque je compile le fichier d'exemple, et que j' éxécute le fichier ./a.out, j'obtiens ceci :
Citation:
Et ce que je ne comprends pas , ce sont les 2 dernières lignes du code justement, celles qui permettent d'obtenir : Citation:
Code :
A quoi servent std::transform, math::gcd_evaluatoir, std:copy,std::ostream_iterator<int> ? Je vous en remercie d'avance. |
||||
|
|
00
|
|
|
#10 | ||
|
Membre chevronné
![]() ![]() Inscription : décembre 2008 Messages : 490 ![]() |
Ce sont des algorithmes de la STL, qui travaillent sur des conteneurs (ex: std::vector). Réfère-toi à la doc :
http://en.cppreference.com/w/cpp/algorithm/transform http://en.cppreference.com/w/cpp/algorithm/copy math::gcd_evaluator est un objet-fonction (ou foncteur) qui contient le traitement GCD. C'est comme une fonction, sauf qu'on peut la passer en argument en tant qu'objet. std::ostream_iterator<int> est un objet de la STL qui permet de convertir un flux sortant en itérateur. Là encore, cf doc : http://en.cppreference.com/w/cpp/ite...tream_iterator L'équivalent avec du code plus classique : Code :
|
||
|
|
00
|
|
|
#11 | ||
![]() Apprenti Inscription : décembre 2010 Messages : 81 ![]() |
Bonjour,
1) à quoi sert précisément le -I dans : c++ -I path/to/boost_1_52_0 example.cpp -o example j'ai trouvé ceci dans la doc de boost. 2)Je ne comprends pas la différence entre boost::math::gcd(6, 15) et boost::math::static_gcd<8, 9>::value dans l'exemple de code la doc de boost qui est le suivant : Code :
Pourriez-vous m'expliquer ? car je ne connais pas trop bien cette histoire de _static que l'on vient ajouter devant. Merci bien Amicalement |
||
|
|
00
|
|
|
#12 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 551 ![]() |
le -I c'est pour déclarer les include_path
gcd et static_gcd sont juste 2 fonctions qui n'ont pas le même nom. Pour connaître leur différence, il faudrait voir la doc qui en parle surement. |
|
|
00
|
|
|
#13 |
|
Membre chevronné
![]() ![]() Inscription : décembre 2008 Messages : 490 ![]() |
Tu as spécifié #include <boost/math/common_factor.hpp> dans ton code, pourtant il n'existe pas de répertoire « boost » dans le répertoire où tu as lancé ta commande g++. -I permet d'aider ton compilo à localiser ce répertoire supplémentaire sur ton disque. Généralement -I/usr/include/boost ou -I/usr/local/include/boost sous Linux.
static_gcd est un calcul qui a lieu à la compilation, si tes arguments sont eux aussi connus dès la compilation. C'est pour faire de la métaprogrammation template, donc rien qui te concerne. |
|
|
00
|
|
|
#14 | |
![]() ![]() |
Bonjour,
Citation:
Il y a rien de pire pour rendre le projet non-portable d'un ordinateur à l'autre. Pourquoi ne pas directement utiliser les options du type -lboost_system, -lboost_thread ? Ainsi toute personne voulant compiler ton code doit simplement installer correctement les bibliothèques sans à avoir à modifier le makefile.
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon. Chaîne Youtube : Vidéos Ma page DVP : http://neckara.developpez.com/ |
|
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() ![]() Inscription : novembre 2008 Messages : 973 ![]() |
Citation:
__________________
HADOPI - Le Net en France : black-out |
|
|
|
10
|
|
|
#16 | |
![]() ![]() |
Salut,
Citation:
Le problème, c'est qu'aucun flag d'édition de lien n'est valide de manière systématique: -lboost_system et -lboost_thread (pour reprendre tes propres exemples), ne seront déjà valides que: si le chemin qui permet d'accéder aux fichier .a / .lib en question est valablement défini auprès de l'éditeur de lien si les bibliothèques en question ne sont pas agrémentées de valeurs propres comme la version de boost, le nom du compilateur utilisé ou encore le fait qu'il s'agisse d'une version debug, monothread ou multithread. Et c'est bien là tout le problème:
autoconf, automake et consors ne sont, encore une fois, disponibles que sous linux, à moins d'utiliser msys ( re re )Je suis donc, dans le fond, plus que tout à fait d'accord avec toi, mais le pragmatisme de base éclaire malheureusement les chose d'une lumière bien sombe, non
__________________
en bas de page
|
|
|
|
00
|
|
|
#17 | ||
![]() ![]() |
Citation:
Citation:
Ceci permet d'avoir plusieurs version d'une même bibliothèque sans qu'il y ai de conflit entre elles et ainsi d'être sûr de compiler avec une bibliothèque 100% compatible avec notre code. Il me semble justement que la lib lua n'est pas très rétrocompatible. Bon après si on veut compiler pour toutes les plateformes, je pense qu'on utilisera plutôt cmake. Désolé pour ce petit HS
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon. Chaîne Youtube : Vidéos Ma page DVP : http://neckara.developpez.com/ |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com