尝试构建库时出现 yaml-cpp 编译器错误
Posted
技术标签:
【中文标题】尝试构建库时出现 yaml-cpp 编译器错误【英文标题】:yaml-cpp compiler errors when trying to build library 【发布时间】:2013-01-05 21:19:41 【问题描述】:我正在尝试使用 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 编译时,我也会遇到同样的错误。
【问题讨论】:
【参考方案1】:我刚刚报告了一个问题并为此提供了修复程序。
请查看http://code.google.com/p/yaml-cpp/issues/detail?id=182
【讨论】:
【参考方案2】:在 VS 2010 中,字符串的类型为 const char[]
,这会导致此编译错误。
对我来说,快速解决方法是将其转换为 char*
YAML::Node config = YAML::LoadFile("Config.cfg");
int value = 0;
if (config[(char*)"value"])
config[(char*)"value"].as<int>();
看起来不太好,但在图书馆修复之前可以使用。
【讨论】:
以上是关于尝试构建库时出现 yaml-cpp 编译器错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Visual Studio 编译器使用 cgo 构建库?