参考
[1] https://stackoverflow.com/questions/36403287/compiler-error-with-yaml-cpp-undefined-reference-to-yamldetailnode-data
问题描述
编译程序过程中出现下面这个问题
/tmp/ccCvErNZ.o: In function `YAML::detail::node& YAML::detail::node_data::get<std::string>(std::string const&, std::shared_ptr<YAML::detail::memory_holder>)':
cricket.cpp:(.text._ZN4YAML6detail9node_data3getISsEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE[_ZN4YAML6detail9node_data3getISsEERNS0_4nodeERKT_St10shared_ptrINS0_13memory_holderEE]+0x94): undefined reference to `YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder>)'
collect2: error: ld returned 1 exit status
解决方式:
- 先看有没有libyaml-cpp库,以及cmakelist的设置有没有问题,能够正确的找到include文件夹和link文件夹
- 再看看是不是yaml-cpp库版本的问题
- 如果上面量个都没有问题,那就是yaml-cpp库自己的一个特定问题,解决方法如下
在Loadfile前面增加两行函数定义:
YAML::BadConversion::~BadConversion()
{
}
void YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder>)
{
}
就能正常编译通过