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

我刚刚报告了一个问题并为此提供了修复程序。

请检查http://code.google.com/p/yaml-cpp/issues/detail?id=182

于 2013-01-10T13:59:46.400 回答
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 回答