Python ctypes整数指针

gan*_*bra 5 python ctypes

如何使用python ctypes实现此功能

extern  int __stdcall GetRate(HANDLE hDev, int* pData)
Run Code Online (Sandbox Code Playgroud)

如何设置数据类型,以便我可以打印pData值

小智 8

如果要调用名为的函数GetRate,可以这样做:

from ctypes import *
from ctypes.wintypes import *

GetRate = windll.YOURLIB.GetRate
GetRate.restype = c_int
GetRate.argtypes = [HANDLE, POINTER(c_int)]

# now call GetRate as something like:
#
# hDev = ... # handle
# Data = c_int()
#
# GetRate(hDev, byref(Data)) # GetRate(hDev, &Data)
# print Data
Run Code Online (Sandbox Code Playgroud)

但如果你试图声明一个回调,函数指针,你可以这样做(我认为你正在寻找第一个):

from ctypes import *
from ctypes.wintypes import *

def GetRate(hDev, pDate):
    # Your implementation
    return 0

# you'll need GETRATE to pass it in the argtypes to the target function
GETRATE = WINFUNCTYPE(c_int, HANDLE, POINTER(c_int))
pGetRate = GETRATE(GetRate)

# now you can pass pGetRate as a callback to another function
Run Code Online (Sandbox Code Playgroud)