2017-07-04 1 views
0

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:

  1. g++ main.cpp -lyaml-cpp -L/path/to/files
  2. g++ main.cpp libyaml-cpp.a
  3. 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.

+1

Avez-vous inclus la '' yaml.h' dans votre main.cpp' et correspondant Drapeau '-I' avec le chemin de' yaml.h' dans la compilation – dlmeetei

+0

@dlmeetei Non, en essayant maintenant ... d'avoir des problèmes de chemin –

+1

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. –

Répondre

1

Ok, je l'ai téléchargé yaml-cpp et essayé, voici une version de travail

#include <iostream> 
#include "yaml-cpp/yaml.h" //You need to prepend the yaml-cpp 

int main(int argc, const char *argv[]) 
{ 
    YAML::Node config = YAML::LoadFile("b.yaml"); 
    //return 0; In cpp, return 0 is not required on main, hence commented 
} 

La compilation en utilisant g++ -std=c++11 main.cpp -lyaml-cpp -I/Users/benlindsay/scratch/yaml-cpp/include -L/Users/benlindsay/scratch/yaml-cpp/build

+0

Merci! Fonctionne comme un charme –

+0

@BenLindsay, Heureux que je pourrais être d'aide :) – dlmeetei