包含库时未找到Qt shared_ptr

时间:2014-02-23 22:30:20

标签: c++ qt boost c++11 shared-ptr

我正在使用Qt创建者和yaml-cpp库。我将yaml-cpp放在我的源代码目录下,并将其添加到Qt项目的include路径中,如下所示:

INCLUDEPATH += Crypto \
    Yaml

QMAKE_CXXFLAGS += -std=gnu++0x
DEFINES += __GXX_EXPERIMENTAL_CXX0X__

正如您所看到的,我还告诉它使用C ++ 11,因为这是此库的要求。但是,我在编译项目时遇到此错误(这是唯一的错误):

../ProjectName/Yaml/yaml-cpp/node/ptr.h:11:10: fatal error: 'boost/shared_ptr.hpp' file not found
#include <boost/shared_ptr.hpp>
         ^

我还尝试在一些在线资源的建议下用#include <memory>替换它,但这不起作用。当我尝试这个时,它仍然找不到shared_ptr

我可能可以编译库并将Qt创建者链接到它,但我必须在我使用的每个平台上以及每个项目开发人员使用的每台机器上执行此操作。将源代码放在我的GitHub目录中并将其与项目一起编译以最小化在他们的机器上编译项目的人的开销似乎是一种更优雅的解决方案,特别是因为这是一个开源项目。

以下是Yaml-Cpp文件的源代码:

#include "yaml-cpp/dll.h"
#include <boost/shared_ptr.hpp>

namespace YAML
{
namespace detail {
    class node;
    class node_ref;
    class node_data;
    class memory;
    class memory_holder;

    typedef boost::shared_ptr<node> shared_node;
    typedef boost::shared_ptr<node_ref> shared_node_ref;
    typedef boost::shared_ptr<node_data> shared_node_data;
    typedef boost::shared_ptr<memory_holder> shared_memory_holder;
    typedef boost::shared_ptr<memory> shared_memory;
}
}

1 个答案:

答案 0 :(得分:1)

您似乎没有安装升压版。你需要先修改它。

但是,当他们的软件使用C ++ 11或更高版本构建时,你可以敦促yaml-cop开发人员越来越多地使用最新的C ++标准。 C ++ 11不再是新事物了。应该尽可能地利用它。