python DLL中的函数指针

问题描述

我正在通过DLL文件编写用于C代码的Python脚本。 我不知道如何在Python中调用回调函数。 我在互联网上发现了很多有用的东西,但我仍然想念很多。 我在C中有以下代码:

typedef uint16(*CALLBACK_1)(DATA *data);
typedef uint16(*CALLBACK_2)(DATA *data);
uint16 end_function(OPT *opt,CALLBACK_1 function_1,CALLBACK_2 function_2,DATA *data);

谢谢!

解决方法

我已经搜索了Python中的回调示例。我发现此链接:https://gist.github.com/mchung/76d774879245b355e8bff95f9172f9f8,其代码如下:

# Example of using callbacks with Python
#
# To run this code
#   1. Copy the content into a file called `callback.py`
#   2. Open Terminal and type: `python /path/to/callback.py`
#   3. Enter

def add(numbers,callback):
    results = []
    for i in numbers:
        results.append(callback(i))
    return results

def add2(number):
    return number + 2

def mul2(number):
    return number * 2

print add([1,2,3,4],add2) #=> [3,4,5,6]
print add([1,mul2) #=> [2,6,8]

看看名为add的函数。它获得两个参数:numberscallback。数字是numbers的数组,而callback是一个函数。此函数创建一个名为results的数组作为空数组,并循环遍历numbers,调用callback(i)并将结果附加到results。如您所见,回调可以位于函数内部的called中。在最后两行中,两个单独的函数传递给add,它们将在函数内部充当callback

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...