尝试链接<boostproperty_treejson_parser.hpp>

Compile errors when attempting to link <boostproperty_treejson_parser.hpp>

本文关键字:parser hpp gt treejson lt boostproperty 链接      更新时间:2023-10-16

我的项目中有以下"includes"文件。

#pragma once
//glm
#include <glmglm.hpp>
#include <glmext.hpp>
#include <glmgtcmatrix_transform.hpp>
//glew
#include "GLglew.h"
//glfw
#define GLFW_DLL
#include "GLFWglfw3.h"
//libpng
#include <png.h>
//std
#include <stdio.h>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <list>
#include <memory>
#include <iostream>
#include <fstream>
#include <assert.h>
//boost
#include <boostfilesystem.hpp>
#include <boostproperty_treejson_parser.hpp> /* problem */
//mandala
#include "types.h"
#include "type_traits.h"
#include "hash.h"
#include "macros.h"

当我包含<boostproperty_treejson_parser.hpp>时,我会得到很多错误,表明我正在重新定义APIENTRY,比如这个:

1>c:program files (x86)windows kits8.0includesharedminwindef.h(130): warning C4005: 'APIENTRY' : macro redefinition

我不明白为什么会发生这种事。我曾试图通过将#define _MINWINDEF_放在include语句之前来抑制对minwindef.h文件的处理,但没有成功。有没有其他人遇到过这种情况,或者知道我如何正确地包含这个增强库?

注意

由于您既没有更新您的问题以反映您对include所做的更改,也没有提供完整的警告消息,我只能猜测:

在包含WinAPI标头的boost lib之前,仍然包含glfw.h。因为当我只是在谷歌上搜索"APIENTRY重新定义"时,我得到的第一个结果是这个SO问题,包括答案:将WinAPI标头(或boost标头includeign their)放在glfw.h include之前。

您可能还需要包括ptree

    #include <boost/property_tree/ptree.hpp>