6

私はPython埋め込みの初心者です。私はPython+numpyコードをC++コールバック関数内(dll内)に埋め込もうとしています

私が直面している問題は次のとおりです。私が持っている場合:

Py_Initialize();
// some python glue
// python invocation
Py_Finalize();

すべてが正常に動作します。

しかし、私が持っている場合:

Py_Initialize();
_import_array(); //to initialize numpy C-API
// some python glue + numpy array object creation
// python invocation via PyObject_CallObject()
Py_Finalize();

これは、2回目に_import_array()に到達したときにクラッシュします。(最初のコールバックで機能することを意味します)

代わりに、pythonとnumpyの初期化を1回だけ実行し、デストラクタでファイナライズを実行すると(したがって、初期化/ファイナライズのたびにではありません)、コールバックを終了するときにすべてがクラッシュします。

ここでの問題は厄介だと思いますが、解決方法がわかりません

4

1 に答える 1

2

コードが実際に呼び出される回数に関係なく、 .dllが一だけ初期化されることを確認してください。

「DLL内のC++シングルトン」へのリンクは次のとおりです。

DLLのシングルトン?

于 2011-09-24T18:10:45.080 に答える