【发布时间】:2011-11-24 08:15:29
【问题描述】:
我是 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,但我不知道如何解决它
【问题讨论】:
-
如果您可以完全控制 DLL 的构建方式,我会亲自将细节留给 distutils 和 swig。这是一个示例项目(与 numpy 交互):github.com/martinxyz/python/tree/master/realistic
标签: c++ python numpy python-c-api python-embedding