3

私はPython3.2用にYencをコンパイルするに疲れています。gccが宣言されていない関数について不平を言っていることに気づいたので、ドキュメントに従ってそれPyString_Typeを置き換えました。PyBytes_Type

ただし、gccは、と呼ばれる宣言されていない関数についても不満を述べましたPyFile_Type。私は少しグーグルして見つけました:

Python 3.x replaces the PyFile_Type extension type 
with an abstract interface and specific implementation types. 
Unfortunately it doesn't make any of this directly available 
with a C level api.

ソース

私は決してCプログラマーではないので、この問題を解決することはできません。これを解決するにはどうすればよいですか?

編集:コンパイルの出力_yenc.c

ありがとう!

4

2 に答える 2

2

簡単に言うと、PyFile_Typeは、Python 3ではリモートでさえ似ていないものに置き換えられており、コードを自分で変更するか、メンテナがそれを行うのを待つ必要があります。あなたがCプログラマーでないなら、それはおそらく後者でなければならないでしょう。 ドキュメントには、File *をラップするのではなく、Python3が低レベルのI/ O、この場合はファイル記述子とread()/ write()をラップするようになったと記載されています。

于 2011-11-19T18:33:14.513 に答える
0

PyFileIO_Typeを使用してみることができますが、事前に宣言する必要があります。(オリジナルはPythonソース内の_iomodule.hにあります):

extern PyTypeObject PyFileIO_Type;
于 2022-02-21T14:10:54.050 に答える