|
3威望
需求如下:
将 c++ 的函数地址传给 Python,在 Python 里面调用该函数。
调用代码如下:
PyObject* pModule = PyImport_ImportModule("FirstTest");
if (!pModule) return "";
PyObject* pFunc = PyObject_GetAttrString(pModule, "SetCallback");
if (pFunc && PyCallable_Check(pFunc)){
PyObject* pArgs = NULL;
pArgs = PyTuple_New(2);
PyTuple_SetItem(pArgs, 0, Py_BuildValue("O&",CallbackFun));
PyTuple_SetItem(pArgs, 1, Py_BuildValue("u",_T("显示回调")));
PyObject_CallObject(pFunc, pArgs);
}
回调函数写法1:
static void _stdcall CallbackFun(LPCTSTR a_pArg){
AfxMessageBox(a_pArg);
}
回调函数写法2:
static PyObject* CallbackFun(PyObject* self,PyObject* a_pArg){
Py_UNICODE* pResult = NULL;
if (PyArg_Parse(a_pArg, "u", &pResult)){
AfxMessageBox(pResult);
}
return NULL;
}
Python 代码如下:
def SetCallback(function,arg1):
function(arg1)
|
|