在包含库时找不到Qt shared_ptr

Qt shared_ptr not found when including a library

本文关键字:shared ptr Qt 找不到 包含库      更新时间:2023-10-16

我正在使用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已经不是什么新鲜事了。应该尽可能多地利用它。