将python + numpy代码嵌入到C++ DLL回调中

Pa_*_*Pa_ 6 c++ python numpy python-embedding python-c-api

我是python嵌入的新手.我试图在C++回调函数中嵌入python + numpy代码(在dll中)

我面临的问题如下.如果我有:

Py_Initialize();
// some python glue
// python invocation
Py_Finalize();
Run Code Online (Sandbox Code Playgroud)

一切正常.

但如果我有:

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

第二次它到达_import_array()时崩溃; (意思是它适用于第一次回调)

如果我改为执行python和numpy初始化只需一次并在析构函数中完成(因此不是每次初始化/最终化),一切都会在离开回调时崩溃.

我猜这里的问题是numpy,但我不知道如何解决它

pau*_*sm4 2

尝试确保您的 .dll 仅初始化一次,无论代码实际调用多少次。

以下是“DLL 中的 C++ 单例”的链接:

DLL 中的单例?