我正在使用 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/