2010-04-26 4 views
2

Je suis un nouveau programmeur C++, et je fais mon premier programme en utilisant C++. J'ai décidé d'utiliser JSON pour stocker certaines des données que je vais utiliser, et j'ai trouvé une bibliothèque pour gérer JSON, JsonCpp.Comment utiliser une bibliothèque partagée (dans ce cas, JsonCpp) dans mon programme C++ sous Linux?

J'ai installé la bibliothèque en utilisant mon gestionnaire de paquets de système Linux, et dans mon code C++, je l'ai utilisé dans mon fichier de code source

#include <json> 

et compilé en utilisant g ++ et il est -ljson et - L/usr/lib options (libjson.so se trouve dans /usr/lib).

Cependant, la première utilisation de Json :: Value, un objet fourni par la bibliothèque, donne une erreur de compilation de "Json n'a pas déclaré". Je suis sûr que mon erreur est simple, alors quelqu'un pourrait-il expliquer ce que je fais de mal? Aucun des livres que j'ai mentionnés ne mentionne comment utiliser les bibliothèques partagées, alors j'ai dû google pour trouver ça.

EDIT: g ++ avec l'option -E donne cette erreur:

json: no such file or directory.

Répondre

4

j'ai vérifié la liste des fichiers de JsonCPP:

include/json/autolink.h [code] 
include/json/config.h [code]  
include/json/features.h [code] 
include/json/forwards.h [code] 
include/json/json.h [code] 
include/json/reader.h [code]  
include/json/value.h [code] 
include/json/writer.h [code] 

Essayez #include <json/json.h> si les en-têtes sont installés dans /usr/include. S'ils sont installés ailleurs, mentionner ce chemin avec -I

g++ -I/my/lib/include -L/my/lib/lib -lmylib mysource.cpp 
0

Avez-vous aussi dire g ++ où trouver les fichiers d'en-tête via -I - ce serait je pense au problème.

+0

Ensuite, il obtiendrait une erreur sur la #include. – bmargulies

0

Cette erreur implique presque certainement que vous n'avez pas le #include dans le fichier source réel qui reçoit l'erreur.

utilisation

g++ -E [whatever other options] 

pour voir la sortie de cpp serait un moyen de vérifier et de voir ce que vous avez réellement inclus.

Cela peut être utile si vous collez le message d'erreur; votre commentaire suggère une erreur sur le #include, mais votre question suggère autre chose.

+0

g ++ -E donne json: Aucun fichier ou répertoire de ce type –

+0

Avez-vous utilisé toutes les mêmes options avec -E que celle utilisée pour obtenir votre erreur? En particulier -I options? – bmargulies

Questions connexes