我被一个看似简单的问题难住了,但答案却在我眼前
我已经将Python嵌入到C++应用程序中,并希望从C++执行Python函数。我需要给这个函数传递一个变量,它实际上是一个SWIG对象。所以我在globals dict中设置了一个变量:
swig_type_info* pTypeInfo = SWIG_TypeQuery("cdb::inst *");
PyObject * arg = SWIG_NewPointerObj( (void *) obj, pTypeInfo, 0);
PyDict_SetItemString(globals, "pyDBObject", arg);
然后调用python函数:
PyRun_String("my_cb()", Py_single_input, globals, locals);
python函数如下所示:
def my_cb() :
print('calling my_cb()')
inst = pyDBObject
我发现嵌入式python说没有定义“pyDBObject”。在my_cb中打印globals()确实表明它不在那里,但调用PyDict_GetItemString表示它在globals dict中
我错过了什么明显的东西吗
目前没有回答
相关问题 更多 >
编程相关推荐