cmath:1136:11: error: '::hypot' has not been declared

cmath:1136:11: error: '::hypot' has not been declared

问题描述
  • 出现情景:Win10 + Clion + Python2.7
  • 具体描述:我在Win系统下Clion编译软件中实现C++与Python的混编(其实是C++调用Python模块)时,当配置好CMakeLists.txt文件中的include_directories(C:/Python27/include)target_link_libraries(Claypot C:/Python27/libs/libpython27.a),发现在引用头文件```#include "Python.h"时会出现错误,如下图所示
    cmath:1136:11: error: '::hypot' has not been declared_第1张图片

注意:当然你需要将target_link_libraries中的Claypot换成你的项目名,还有以上的路径也需要换成你自己的路径。

解决办法

在cpp文件中引用头文件#include "Python.h"之前引用#include "math.h",如下图所示

cmath:1136:11: error: '::hypot' has not been declared_第2张图片

但是我们知道在Python官方文档中明确提示,要把头文件#include "Python.h" 放在第一行,如下图中红色标注的区域

所以我们最好不要这样解决,我们可以打开目录C:/Python27/include中的.h头文件,在开头加上#include "math.h"头文件,如下图所示

cmath:1136:11: error: '::hypot' has not been declared_第3张图片
,保存关闭,然后返回Clion软件在首行引用 #include "Python.h"就不会出错了。

总结

之前在Ubuntu的Clion软件中实现C++调用Python模块的功能,配置好可以成功实现。但是在Win的Clion中实现C++调用Python模块的功能便出现了这个错误,在网站上查找了很多资料,最终得以成功解决,现在写一篇记录,总结一下,总之这个错误出现的原因我不知道,但是上述所说的方法的确可以解决这个错误。

你可能感兴趣的:(cmath:1136:11: error: '::hypot' has not been declared)