【オリジナル】cmath:157:11:error:'::hypot'has not been declared

1577 ワード

pyconfig  header file , “cmath:1157:11: error: '::hypot' has not been declared”。 hypotあるセグメントコードによって_hypot, cmath呼び出しhypot に名前が変更された
1、ソースコード修正(まあ、よく問題があってうまく解決できないので、他人のソースコードしか作れない)
ソースコードの導入順序を変更し、include「math.h」の導入をinclude「Python」の前に、hypotの名前が変更される前にcmathにhypotを呼び出すようにします.
具体的な方法は次のとおりです.
方法1、Pythonを修正する.hのソースコードは、その先頭にmathを加える.hの導入、修正結果は以下の通り
#ifndef Py_PYTHON_H
#define Py_PYTHON_H
/* Since this is a "meta-include" file, no #ifdef __cplusplus / extern "C" { */

/* Include nearly all Python header files */
#include "math.h"

方法2、include“math.h”とinclude“Python”の導入順序を入れ替える.
2、自分のmathを作る.h(他人のソースコードをできるだけ修正しないように、ソースコードをコピーして自分で使う)
  • ソースコードのmathをコピーする.hはmathXXXXと改名した.h
  • mathXXX.hの「hypot」は「_hypot」
  • に置き換えられる
  • プロジェクトでmathを呼び出す必要がある.hの場所(私のプロジェクトではpyport.hというファイルがmath.hを呼び出した)をmathXXXを呼び出すように変更しました.h

  • 3、コンパイルオプションにD_を追加するhypot=hypot(後にlimingaoyuブログで知りましたが、本人は確認していません)
    詳しくはhttps://blog.csdn.net/limingaoyu/article/details/101424262
    4、cmathヘッダに#define_を追加するhypot hypot(後にgdtop 818ブログで知りましたが、本人は確認していません)
    このエラーはcmath:1096:11:error:'::hypot'has not been declaredであり、本明細書の問題とは異なり、通じるかどうかは不明である.
    詳しくはhttps://blog.csdn.net/weixin_37993251/article/details/88054384