尝试构建库时出现 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::equalsnode_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 编译器错误的主要内容,如果未能解决你的问题,请参考以下文章

Cmake错误构建库

未定义的参考 yaml-cpp

如何使用 Visual Studio 编译器使用 cgo 构建库?

尝试编译函数时出现语法错误

尝试在 android studio 中安装按钮时出现编译器错误

尝试使用 QQmlListProperty 时出现 Qt 编译器错误