嵌入python + numpy代码到c++ dll回调



我是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();

this在第二次到达_import_array()时崩溃;(这意味着它适用于第一个回调)

如果我只做一次python和numpy初始化,并在析构函数中结束(因此不是每次初始化/结束),那么在离开回调时,一切都崩溃了。

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

尝试确保您的.dll只初始化一次,不管代码实际调用了多少次。

这里有一个关于"DLL中的c++单例"的链接:

DLL中的单例?

最新更新