yaml-cpp库undefined reference错误解决方法

参考

[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 const&, std::shared_ptr)':
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)'
collect2: error: ld returned 1 exit status

解决方式:

  1. 先看有没有libyaml-cpp库,以及cmakelist的设置有没有问题,能够正确的找到include文件夹和link文件夹
  2. 再看看是不是yaml-cpp库版本的问题
  3. 如果上面量个都没有问题,那就是yaml-cpp库自己的一个特定问题,解决方法如下
    在Loadfile前面增加两行函数定义:
   YAML::BadConversion::~BadConversion()
{
}

void  YAML::detail::node_data::convert_to_map(std::shared_ptr)
{
}

就能正常编译通过

你可能感兴趣的:(代码debug,c++)