c++ - 包含库时找不到 Qt shared_ptr

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

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

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 Creator 链接到它,但我必须在我使用的每个平台以及每个项目开发人员使用的每台机器上执行此操作。将源代码放在我的 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;
}
}

最佳答案

您似乎没有安装 boost。您需要先修改它。

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

关于c++ - 包含库时找不到 Qt shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975555/

相关文章:

c++ - 使用 boost::bind 传递成员函数

c++ - 对运营商的澄清

c++ - const 成员函数中模板成员的常量

c++ - 如何在 GitHub 存储库的团队服务构建中链接第三方库 (.lib)?

qt - 为什么 qtsettings 以奇怪的模式存储 float ,缺少什么?

css - 将背景样式表设置为 QWidget 显示在所有控件上

c++ - 奇怪的 basic_string 构造函数 c++17

c++ - Qt 反转选项卡 QTabWidget?

c++ - 振奋 spirit : Parse char_ with changing local variable value

c++ - boost::asio 是否使用 ssl session 缓存?