我正在尝试在代码中使用yaml-cpp,但是我收到以下错误:
yaml-cpp / 0.5.1 / include / yaml-cpp / node / detail / node_ref.h:47:95:erreur:使用已删除的函数'boost :: shared_ptr< YAML :: detail :: memory_holder>: :shared_ptr(const boost :: shared_ptr< YAML :: detail :: memory_holder>&)' void push_back(node& node,shared_memory_holder pMemory){m_pData-> push_back(node,pMemory); }
导致此错误的代码是:
#include <cstdlib>
#include <yaml-cpp/yaml.h>
int main()
{
YAML::Emitter out;
return EXIT_SUCCESS;
}
我曾尝试使用上一版本的boost来克服这个问题,但它似乎没有改变任何东西。这是我用来安装yaml-cpp的cmake命令:
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/yaml-cpp/0.5.1/ -D Boost_NO_BOOST_CMAKE=TRUE -D BOOST_ROOT=/usr/local/boost/1.57.0 -D Boost_LIBRARY_DIRS=/usr/local/boost/1.57.0/lib/ -D Boost_NO_SYSTEM_PATHS=TRUE -D CMAKE_CXX_COMPILER=/usr/local/gcc/4.8.2/bin/g++ ..
make
make install
请帮帮我吗?
编辑:当我从编译命令行中删除-std = c ++ 11标志时,问题就消失了。
编辑:要解决此问题,必须将路径放在编译命令行中的boost安装的include目录中。请参阅user744629答案下方的评论。
答案 0 :(得分:1)
正如评论所说,yaml-cpp
已正确构建和安装,但编译可执行文件所需-I
标记以包含Boost
标题yaml-cpp
已构建,否则系统目录中使用了过多的Boost
标头。
以下是我用于在非标准位置安装yaml-cpp
来构建Boost
的命令行:
cmake \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DBoost_INCLUDE_DIR=$PREFIX/boost_1_55_0 \
-DBUILD_SHARED_LIBS=ON \
..
查看完整的conda recipe。
希望它有所帮助。