C++11 boost&x27的问题;使用yaml cpp时的共享\u ptr
我试图在代码中使用yaml cpp,但出现以下错误: yaml cpp/0.5.1/include/yaml cpp/node/detail/node_ref.h:47:95:erreur:使用删除的函数'boost::shared_ptr::shared_ptr(const boost::shared_ptr&)' void push_back(节点&节点,共享内存){m_pData->push_back(节点,内存);} 导致此错误的代码是:C++11 boost&x27的问题;使用yaml cpp时的共享\u ptr,c++11,boost,cmake,yaml-cpp,C++11,Boost,Cmake,Yaml Cpp,我试图在代码中使用yaml cpp,但出现以下错误: yaml cpp/0.5.1/include/yaml cpp/node/detail/node_ref.h:47:95:erreur:使用删除的函数'boost::shared_ptr::shared_ptr(const boost::shared_ptr&)' void push_back(节点&节点,共享内存){m_pData->push_back(节点,内存);} 导致此错误的代码是: #include <cstdlib>
#include <cstdlib>
#include <yaml-cpp/yaml.h>
int main()
{
YAML::Emitter out;
return EXIT_SUCCESS;
}
你能帮帮我吗
编辑:当我从编译命令行中删除-std=c++11标志时,问题就消失了
编辑:要解决这个问题,您必须在编译命令行中输入boost安装的include目录的路径。请参见用户744629回答下面的注释。Edit
正如评论所说,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 \
..
请参阅全文
希望能有所帮助。非常感谢您的帮助,但是我在您的cmake命令行中仍然存在相同的问题。在编译main.cxx时,是否放置了-I/usr/local/boost/1.57.0/include标志?
cmake \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DBoost_INCLUDE_DIR=$PREFIX/boost_1_55_0 \
-DBUILD_SHARED_LIBS=ON \
..