4

Visual Studio 2008 を使用して、Windows で Python C API を使用しています。PyDate_Checkマクロやその他の関連マクロを使用しようとすると、静的変数 PyDateTimeAPI が null であるため、アクセス違反が発生します。この変数はPyDateTime_IMPORT、日時マクロを使用する前に呼び出す必要があるマクロを使用して初期化されます。これは、別のスレッドで新しい Python サブインタープリターを作成するときに行います。

いくつかの質問: - マクロの関数がnull を返す
のはなぜですか。null の戻り値は、モジュールが見つからないためだと理解しています。しかし、どうして datetime モジュールが見つからないのでしょうか? サブインタープリターの sys.path が正しくないためでしょうか? - また、サブインタープリターが初期化された直後、または Python インタープリターが初期化されたときに、正しい場所でマクロを呼び出していますか?PyCObject_ImportPyDateTime_IMPORTPyDateTime_IMPORT

PyDateTime_IMPORT意味:

#define PyDateTime_IMPORT \
    PyDateTimeAPI = (PyDateTime_CAPI*) PyCObject_Import("datetime", \
                                                        "datetime_CAPI")`
4

2 に答える 2

3

G++ と Python 3.2 を使用して、この同じ問題に遭遇しました。PyDateTimeAPI がヘッダーで宣言されているため、そのヘッダーを含む各ファイルは独自のバージョンの変数を取得します。

于 2011-03-17T22:07:45.317 に答える