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

时间:2011-09-24 17:56:02

标签: c++ python numpy python-c-api python-embedding

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

这是关于“DLL中的C ++ Singleton”的链接:

Singleton in a DLL?