在C ++应用程序中使用嵌入式Python的问题

时间:2015-10-15 20:58:57

标签: python c++

我正在尝试在我的C ++应用程序中嵌入Python,有点类似于1.4节中的方法:

https://docs.python.org/3.5/extending/embedding.html

我遇到的问题的概要是我无法让C ++应用程序使用导入'emb'模块的.py文件,即编写到C ++代码中的Python扩展模块。 / p>

我有一个Python文件,testmod.py:

import emb

# define some functions
def printhello(input):
    emb.numargs()
    return 2

def timesfour(input):
     print(input * 4)

在我的C ++应用程序中,我有以下代码:

PyImport_AppendInittab("emb", &(mynamespace::PyInit_emb) );
Py_Initialize();

PyObject *globals = PyModule_GetDict(PyImport_AddModule("__main__"));

PyObject *testModule = PyImport_ImportModule("emb");
PyObject* pFunc = PyObject_GetAttrString(testModule, "numargs");

此后,pFunc为非NULL;事情看起来不错。所以我认为'嵌入式模块'很好。

如果我将上面的最后两行更改为:

PyObject* testModule = PyImport_ImportModule("testmod");
PyObject* pFunc = PyObject_GetAttrString(testModule, "printhello");

这也很好,如果从testmod.py中删除了行emb.numargs()一旦我添加了该行,并重新运行C ++应用程序,testModule变为NULL,这意味着什么出了问题。

有什么想法吗? 这是应该使用这种能力的方式吗?

0 个答案:

没有答案