我尝试使用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::equals
和node_data::convert_to_node
请注意,这些错误来自run-tests
项目文件;我实际上能够构建lib文件,但不能使用该库,因为它需要这些功能才能工作。
有什么想法吗?
编辑:在使用VS 2010进行编译时,我也会遇到相同的错误。
答案 0 :(得分:0)
我刚报道了一个isse并包含了一个修复程序。
答案 1 :(得分: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>();
看起来不太好但是会在图书馆的修复工作到来之前一直工作。