import ctypes
CALLBACK_VOID_FUNC = CFUNCTYPE(None)
def myVoidHandler():
print("myVoidHandler (python)")
def initialize(myCHandle):
global myCDll, callback1
myCDll = ctypes.CDLL("CppEventsd", handle = myCHandle)
[...]
callback1 = CALLBACK_VOID_FUNC(myVoidHandler)
myCDll.connect(b"readyToGo", callback1)
[...]
连接方法的签名:
extern "C" __declspec(dllexport) bool connect(char* signalName, void(*pF)())
现在可以从cpp调用python函数myVoidHandler,如下所示:
pF();
但更重要的是,pF可以连接到升压信号。你知道吗
但是,我想让用户不用再经历这个过程(并且让我自己也不用再处理支持请求,因为他们没有完全正确地得到它),因此我想通过使用函数/插槽的命名约定从cpp端连接python函数。 我可以很容易地检索到python回调的PyObjet指针:
PyObject *pModule, *pDict, *pVoidHandlerF;
pModule = PyImport_Import(pName);
pDict = PyModule_GetDict(pModule);
pVoidHandlerF = PyDict_GetItemString(pDict, "myVoidHandler");
但是我不知道如何从cpp端获取实际的函数指针(相当于pF)!python到Cpp的转换过程中似乎正在进行一些转换。你知道吗
有什么想法吗?你知道吗
这允许你在C++方面做其他的事情,例如传递参数、返回值、检查错误等等。
相关问题 更多 >
编程相关推荐