我有一个 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)
关于python - C DLL 到 Python 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011620/