繁体   English   中英

从C DLL到Python的回调

[英]C DLL to Python Callback

我有一个Visual C ++ DLL。 我在DLL中导出了一个SetCallback(函数指针)。 我使用此函数从python2.7脚本设置回调函数。 我遵循Python文档中给出的内容。

from ctypes import *
def mypy_callback(number):
    print str(number)

d = cdll.LoadLibrary(r"myfunctions.dll")
callback_type = CFUNCTYPE(None, c_int )
d.SetCallback(callback_type(mypy_callback))

在C代码中

typedef void (*callback_function)(int);
void SetCallback(callback_function aCallback)
{
    py_callback = aCallback;
}

当我从C DLL调用此函数时,例如:py_callback(999),python只会崩溃。 我可能做错了什么?

以下回调间接寻址将解决此问题:

d = cdll.LoadLibrary(r"myfunctions.dll")
callback_type = CFUNCTYPE(None, c_int )
callback = callback_type(mypy_callback)
d.SetCallback(callback)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM