2014-02-23 59 views
1

我正在使用Qt创建器和yaml-cpp库。我把我的源代码目录下的YAML-CPP并将其添加到Qt的项目包括像这样的路径:包含库时未找到Qt shared_ptr

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

你安装了boost吗? –

+0

如果你用'memory'替换'boost/shared_ptr.hpp',你需要用'std :: shared_ptr'来代替'boost :: shared_ptr' ... –

+0

我试过放入std命名空间,但是没有工作。我如何安装boost? –

回答

1

看来你没有安装增压做。你需要先修改它。

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

+1

你似乎错过了某处的否定。 –