2017-07-04 16 views
0

私はyaml-cpp parserをコンピュータ上で動作させようとしています。私はREADMEの指示に従いました。エラーや警告なしでlibyaml-cpp.aというファイルが生成されました。その後、私はディレクトリにそのファイルをコピーし、のは、次のテキストが含まれて私もb.yamlを入れ/path/to/files、およびmain.cppを、それを呼びましょう:C++で.aファイルをリンクする方法

// main.cpp 

int main(int argc, const char *argv[]) 
{ 
    YAML::Node config = YAML::LoadFile("b.yaml"); 
    return 0; 
} 

これはyaml-cpp tutorialの最初の行から来ています。私はyaml-cppライブラリにいくつかの異なる方法でリンクしながらこれをコンパイルしようとしましたが、そのすべてが同じコンパイル時エラー:use of undeclared identifier 'YAML'につながります。

  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

など:ここに私が試した事のいくつかです。これを正しくコンパイルするか、このプロセスをより適切にデバッグするにはどうしたらいいですか?

== EDITの==

は今私のmain.cppファイルには、次のようになります。

// main.cpp 

#include <iostream> 
#include "yaml.h" 

int main(int argc, const char *argv[]) 
{ 
    YAML::Node config = YAML::LoadFile("b.yaml"); 
    return 0; 
} 

は、ここに私のコンパイルコマンドとエラーメッセージです:

$ 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/includeyaml-cppディレクトリを含む、どのさらにyaml.hを含む.hファイルがすべて含まれています。 /Users/benlindsay/scratch/yaml-cpp/buildにはlyaml-cpp.aファイルが含まれています。

+1

はあなた 'main.cpp'と対応で' yaml.h'が含まれている使用してコンパイルされコンパイルの 'yaml.h'へのパスに' -I'フラグを設定します。 – dlmeetei

+0

@dlmeeteiいいえ、これを試してみてください...いくつかのパスの問題があります –

+1

あなたにリンクの問題はありません。コンパイルに問題があります。あなたは、あなたが実現しなかったいくつかの情報が関連しているかもしれないが関連性があるかもしれないので、全体の誤りを逐語的に投稿するべきです。 –

答えて

1

[OK]を、私はyaml-cppをダウンロードして試してみた、ここで作業バージョン

#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 
} 

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

+0

ありがとう!魅力のように動作します –

+0

@BenLindsay、私が助けになることができて幸せ:) – dlmeetei

関連する問題