J'essaye d'obtenir le yaml-cpp parser fonctionnant sur mon ordinateur. J'ai suivi les instructions sur le README, qui a généré le fichier libyaml-cpp.a
sans erreurs ou avertissements. Ensuite, je copiais ce fichier dans un répertoire, nous allons l'appeler /path/to/files
, où je mets aussi b.yaml
et main.cpp
, qui contient le texte suivant:Comment lier un fichier .a en C++
// main.cpp
int main(int argc, const char *argv[])
{
YAML::Node config = YAML::LoadFile("b.yaml");
return 0;
}
Cela vient de la première ligne du yaml-cpp tutorial. J'ai essayé de compiler ceci en liant à la bibliothèque yaml-cpp
de plusieurs manières différentes, qui mènent toutes à la même erreur de compilation: use of undeclared identifier 'YAML'
. Voici quelques-unes des choses que j'essayées:
g++ main.cpp -lyaml-cpp -L/path/to/files
g++ main.cpp libyaml-cpp.a
g++ main.cpp libyaml-cpp.a -lyaml-cpp -L/path/to/files
et ainsi de suite. Comment compiler correctement ou plus correctement déboguer ce processus?
== EDIT ==
Maintenant mon dossier main.cpp
ressemble à ceci:
// main.cpp
#include <iostream>
#include "yaml.h"
int main(int argc, const char *argv[])
{
YAML::Node config = YAML::LoadFile("b.yaml");
return 0;
}
Voici ma commande de compilation et un message d'erreur:
$ g++ main.cpp -lyaml-cpp -I/Users/benlindsay/scratch/yaml-cpp/include -L/Users/benlindsay/scratch/yaml-cpp/build
main.cpp:10:3: error: use of undeclared identifier 'YAML'
YAML::Node config = YAML::LoadFile("b.yaml");
^
main.cpp:10:23: error: use of undeclared identifier 'YAML'
YAML::Node config = YAML::LoadFile("b.yaml");
^
2 errors generated.
make: *** [a.out] Error 1
/Users/benlindsay/scratch/yaml-cpp/include
contient un répertoire yaml-cpp
, qui à son tour contient tous les fichiers .h
, y compris yaml.h
. /Users/benlindsay/scratch/yaml-cpp/build
contient le fichier lyaml-cpp.a
.
Avez-vous inclus la '' yaml.h' dans votre main.cpp' et correspondant Drapeau '-I' avec le chemin de' yaml.h' dans la compilation – dlmeetei
@dlmeetei Non, en essayant maintenant ... d'avoir des problèmes de chemin –
Vous n'avez pas de problème de lien. Vous rencontrez un problème de compilation. Vous devriez publier l'intégralité de l'erreur mot pour mot, car il se peut que certaines informations que vous n'avez pas réalisées soient pertinentes, mais pertinentes. –