1.两个库中的类型名重定义
b2settings.h (Box2D): typedef unsigned int uint32;
jsotypes.h (Spidermonkey): typedef unsigned long uint32;
#define uint32 Box2D_uint32
#include "Box2D.h"
#undef uint32 #define
uint32 Spider_uint32
#include "Spidermonkey.h"
#undef uint32
2.一个库中的类模板函数 与另一个库中的类构造函数重名
OCC Standard_Handle.hxx: #define Handle(Class) opencascade::handle<Class>
CGAL Handle.h: Handle() noexcept: PTR(static_cast<Rep*>(0)) {}
在报错的handle.h中
#undef Handle(Class)
Handle() noexcept
: PTR(static_cast<Rep*>(0)) {}
须在调用Handle(Class)中的第三方文件c.CPP中添加
#undef Handle(Class)
#include <CGAL/Handle.h>
#define Handle(Class) opencascade::handle<Class>
#include <Standard_Handle.hxx>