私は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'
につながります。
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
など:ここに私が試した事のいくつかです。これを正しくコンパイルするか、このプロセスをより適切にデバッグするにはどうしたらいいですか?
== 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/include
はyaml-cpp
ディレクトリを含む、どのさらにyaml.h
を含む.h
ファイルがすべて含まれています。 /Users/benlindsay/scratch/yaml-cpp/build
にはlyaml-cpp.a
ファイルが含まれています。
はあなた 'main.cpp'と対応で' yaml.h'が含まれている使用してコンパイルされコンパイルの 'yaml.h'へのパスに' -I'フラグを設定します。 – dlmeetei
@dlmeeteiいいえ、これを試してみてください...いくつかのパスの問題があります –
あなたにリンクの問題はありません。コンパイルに問題があります。あなたは、あなたが実現しなかったいくつかの情報が関連しているかもしれないが関連性があるかもしれないので、全体の誤りを逐語的に投稿するべきです。 –