在包含库时找不到Qt shared_ptr
Qt shared_ptr not found when including a library
我正在使用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;
}
}
您似乎没有安装boost。你需要先修改一下。
然而,当他们的软件使用C++11或更高版本构建时,您可以敦促yaml-cop开发人员越来越多地使用最新的C++标准。C++11已经不是什么新鲜事了。应该尽可能多地利用它。
相关文章:
- CLANG 编译器 说:变量"PTR"可能未初始化
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 将 ptr 传递给 ptr 到 A 作为参数传递给 A 的函数是不好的做法吗?
- 为共享 ptr 向量实现复制 c'tor?
- 字符和整数中 **(ptr+1) 的值差异
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- 如何将派生类从基 ptr 分配给 nlohmann::json
- 引用 std::shared:ptr 以避免引用计数
- 为什么我不能在不进行任何转换的情况下将浮点数放入任何类型的 ptr 中?
- 在调用函数时,ptr** 和 ptr*& 之间是否有区别,或者首选C++?
- 另一种类型的智能ptr,比如具有弱refs的unique_ptr
- 尝试打印出 *ptr++ 的值,以了解它是如何工作的
- 如何控制共享 ptr 引用计数?
- dopen():不以 root 身份运行时"failed to map segment from shared object"
- C++中的指针否定 (!ptr == NULL)
- 从const ptr*转换为ptr*时出现问题
- 无法使用 libtool 将 -shared 参数传递给 g++
- boost::shared_ptr和std::shared-ptr的同居
- 我可以用std::shared_ptr而不是boost::shared-ptr构建boost库吗
- shared-ptr-C++shared_ptr与unique_ptr用于资源管理