comment #inclure des bibliothèques tierces
J'ai construit et installé une bibliothèque appelée OhNet. Après make install
les fichiers d'en-tête correspondant du cadre ont été installés sous usr/local/include/ohNet
. Maintenant, je veux utiliser la Bibliothèque dans mon projet C++ (je suis à l'aide d'eclipse) mais quand j'essaie d'inclure certains fichiers d'en-tête, eclipse n'est pas en mesure de trouver les fichiers.
Autant que je sache, eclipse doit rechercher les fichiers d'en-tête dans ces répertoires (/usr/include , /usr/local/include ,...) par défaut.... Que dois-je faire pour utiliser la bibliothèque?
Je suis assez novice en C++ et je n'ai pas utilisé les sources de tierce partie avant.
Merci.
--EDIT--
Je veux simplement écrire un simple "helloworld" programm pour vérifier que j'ai inclus dans le cadre correctement. Afin de faire ce que je veux démarrent des instances de la classe OpenHome::Net::DvDeviceStdStandard
. voir: ohNet référence C++
Je peut maintenant inclure le fichier d'en-tête à l'aide de:
#include <ohNet/OpenHome/Net/Core/DvDevice.h>
Qui fonctionne très bien. Mais comment puis-je créer un objet de type OpenHome::Net::DvDeviceStdStandard
? maintenant? Eclipse dit que ce type de ne peut pas être résolu. 🙁
#include <iostream>
#include <ohNet/OpenHome/Net/Core/DvDevice.h>
using namespace std;
int main() {
OpenHome::Net::DvDeviceStdStandard device; //type cannot be resolved
cout << "!!!Hello World!!!" << endl;
return 0;
}
#include
directive que vous utilisez qui échoue.#include < chemin comme si le répertoire de travail est usr/local/include >
Si seulement Eclipse le dit, mais votre projet se compile sans erreur, essayez de ré-indexation du projet.
Je vous remercie pour votre aide. Elle fonctionne. J'ai aussi marqué votre réponse acceptée! 🙂
OriginalL'auteur Moonlit | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
-I
option du compilateur à point pour la 3ème partie, répertoire des bibliothèques (-I/usr/local/include/ohNet
)#include "[whatever you need from oHNet].h"
dans vos fichiers d'en-tête et les unités de compilation nécessaires (Remarque: vous pourriez avoir besoin de mettre relative préfixe chemins pour subdirecories dans la 3ème partie d'inclure les chemins de l'arborescence, cliquez ici!)-L
linker option pour spécifier un chemin d'accès à la 3ème partie libs dont vous avez besoin (-L/usr/local/lib
probablement)-l
linker option pour spécifier des 3e libs dont vous avez besoin (-l[oHNet]
probablement)Rechercher dans les répertoires de ce qui a été installé à la figure quelle place pour l'
[whatever you need from oHNet].h
et[oHNet]
, s.th. commeliboHNet.a
pour le second.Vous n'avez pas de balise [tag:Eclipse CDT] explicitement ici, mais allez-y pour le Projet->Propriétés->C++ Builder->Paramètres de la boîte de Dialogue et regardez pour le C/C++ Comprend et Options du Linker.
Benjamin Lindley déjà mentionné, il peut dépendre de la façon dont vous êtes en précisant le
#include
déclaration. Afin de montrer ce que vous êtes en train de faire plus en détail s'il vous plaît.Et oui, c'est vrai, mais le compilateur, éditeur de liens ne regardez pas en l'air de manière récursive.
j'ai fait une modification sur ma question
OriginalL'auteur πάντα ῥεῖ
Vous devrez mettre les fichiers d'en-tête que vous souhaitez utiliser dans votre dossier de projet et ensuite utiliser #inclure dans votre .fichier cpp juste comme la façon dont vous le feriez pour tout autre fichiers d'en-tête.
-I
avecg++
à titre d'exemple)En fait j'ai installé la bibliothèque à l'aide de
make install
et de tous les dossiers où copié à/usr/local/lib
et/usr/local/include
, donc je suppose que je n'ai pas à mettre ces fichiers dans le projet?!OriginalL'auteur user2543325