' :: hypot将'尚未宣布

时间:2017-02-16 14:38:02

标签: python c++ machine-learning theano

我使用的是python3.6 theano, 安装了mingw-w64-x86-64,我的操作系统是Win10_64,安装了cuda, 似乎一切都好吗

theano.test()没关系,说我的gpu正在运行,

但它只是告诉我"错误:' :: hypot'尚未宣布"

 C:/mingw64/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/cmath:1157:11: error: '::hypot' has 
 not been declared\r.    using ::hypot;\r.            ^~~~~\r. ", 

任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:10)

使用mingw32构建python文件时遇到此错误。 我打开了它所说的文件(C:/mingw64/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c ++ / cmath:1157:11)
并将该行更改为

using ::_hypot;

或在此之前添加此行:

#define hypot _hypot

之后问题解决了!! 我知道它不是一个基本的解决方案,但它是我能找到的那个!!

答案 1 :(得分:2)

(此答案最初发表在评论中)

我必须保留原始的mingw cmath标头(否则将不会生成libpng),并且在#define hypot _hypot中注释了pyconfig.h(第241行)。

答案 2 :(得分:0)

我从您的不完整信息中猜测,您无法在C ++ 11模式下进行编译,因此您无法从C99中获取::hypot

答案 3 :(得分:0)

对我有用的是结合使用上述答案:

#ifdef _WIN64
#define _hypot hypot
#include <cmath>
#endif
#include <pybind11.h>