У меня есть следующий файл "includes" в моем проекте.
#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
например, этот:
1>c:\program files (x86)\windows kits\8.0\include\shared\minwindef.h(130): warning C4005: 'APIENTRY' : macro redefinition
Я недоумеваю, почему это происходит. Я попытался подавить файл minwindef.h
от обработки, поставив #define _MINWINDEF_
перед оператором include, но безрезультатно. Кто-нибудь еще сталкивался с этим или имел какое-либо представление о том, как я могу правильно включить эту библиотеку повышения?
ЗАМЕТКА
Поскольку youd не обновлял ваш вопрос, чтобы отражать изменения в сделанных вами предложениях, а также не предоставлять все предупреждающее сообщение, я могу только догадываться:
У вас все еще есть glfw.h
включен перед boost lib, который включает в себя заголовок WinAPI. Потому что, когда я просто google для "переопределения APIENTRY", я получаю этот вопрос SO как первый результат, включая ответ: поместите заголовок WinAPI (или заголовок форматирования, который включает их) до того, как glfw.h
.
Вы можете также включить ptree
.
#include <boost/property_tree/ptree.hpp>
minwindef.h
объявляющийnear
иfar
; имена, которые я широко использовал в своем коде.