尝试链接<boost \ property_tree \ json_parser.hpp> </boost \ property_tree \ json_parser.hpp>时编译错误

时间:2013-11-26 07:56:09

标签: c++ windows boost

我的项目中有以下“包含”文件。

#pragma once

//glm
#include <glm\glm.hpp>
#include <glm\ext.hpp>
#include <glm\gtc\matrix_transform.hpp>

//glew
#include "GL\glew.h"

//glfw
#define GLFW_DLL
#include "GLFW\glfw3.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 <boost\filesystem.hpp>
#include <boost\property_tree\json_parser.hpp> /* problem */

//mandala
#include "types.h"
#include "type_traits.h"
#include "hash.h"
#include "macros.h"

当我加入<boost\property_tree\json_parser.hpp>时,我收到很多错误,表明我正在重新定义APIENTRY,例如:{/ p>

1>c:\program files (x86)\windows kits\8.0\include\shared\minwindef.h(130): warning C4005: 'APIENTRY' : macro redefinition

我很困惑为什么会这样。我试图通过在include语句之前放置minwindef.h来禁止处理#define _MINWINDEF_文件,但无济于事。有没有其他人遇到这个或者有任何想法如何正确地包含这个升级库?

注意

2 个答案:

答案 0 :(得分:1)

既然你没有更新你的问题以反映你所做的包含的变化,也没有提供整个警告信息,我只能猜测:

在包含WinAPI标头的boost lib之前,您仍然包含glfw.h。因为当我只是谷歌“APIENTRY重新定义”时,我得到this SO question作为第一个结果,包括答案:在glfw.h包含之前放置WinAPI标题(或者包括它们的提升标题)。

答案 1 :(得分:-1)

您可能还想要包含ptree

    #include <boost/property_tree/ptree.hpp>