我正在尝试使用GCC 4.7.0(MinGW)构建Boost 1.49.0。我多次收到以下错误消息:


cmath的第1096行包含

using ::hypot;
cmath包含math.h,该文件将hypot函数声明为
extern double __cdecl hypot (double, double); /* in libmoldname.a */

在这两个文件中,上面引用的两行后面都是hypotl函数的相同语句(除了类型是long double而不是double),并且看起来很高兴。

任何想法为什么我会收到此错误?

最佳答案

@Praetorian的答案可以正确识别问题。
另一方面,Python header 在技术上应优先于其他 header 。
另外,有时可接受的解决方案在构建系统中不起作用或不方便,因此我想出了一个替代解决方案。
将以下标志添加到对g++的调用中:

-D_hypot=hypot

这样一来,Python header 中的有害宏将变为无操作,并且编译错误将消失。

关于c++ - 使用GCC 4.7.0构建Boost 1.49.0时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10660524/

10-08 21:15