gpt4 book ai didi

python - C DLL 到 Python 回调

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:50 24 4
gpt4 key购买 nike

我有一个 Visual C++ DLL。我在 DLL 中导出了一个 SetCallback(function-pointer)。我使用此函数从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com