2

Visual Studio Express 2012 (Cmake で生成されたプロジェクト ファイルを使用) を使用してyaml-cpp 0.5 をコンパイルしようとしていますが、impl.h からいくつかのエラーが発生しています。

error C2734: 'lhs' : const object must be initialized if not extern
error C2027: use of undefined type 'YAML::convert<T>'
error C3861: 'decode': identifier not found
error C3861: 'encode': identifier not found

すべてのエラーはテンプレート関数から来ておりnode_data::equalsnode_data::convert_to_node

run-testsこれらのエラーはプロジェクト ファイルから発生していることに注意してください。実際に lib ファイルをビルドすることはできますが、機能するためにこれらの関数が必要なため、ライブラリを使用できません。

何か案は?

編集: VS 2010 でコンパイルするときにも同じエラーが発生します。

4

2 に答える 2

0

VS 2010 では、文字列は型const char[]であり、それが原因でこのコンパイル エラーが発生します。私にとって簡単な修正は、それをキャストすることでしたchar*

YAML::Node config = YAML::LoadFile("Config.cfg");
int value = 0;
if (config[(char*)"value"])
    config[(char*)"value"].as<int>();

見栄えはよくありませんが、ライブラリからの修正が来るまでは機能します。

于 2013-03-25T21:49:29.850 に答える
0

問題を報告し、これに対する修正を含めました。

http://code.google.com/p/yaml-cpp/issues/detail?id=182を確認してください

于 2013-01-10T13:59:46.400 に答える