我有一个C函数,它接受一个int并通过填充b
中的值返回typedef uint8_t State;
#define STATE_POWERDOWN ((State) 0x00)
#define STATE_SLEEP ((State) 0x10)
int Val_GetStatus(int a , State *b)
此功能与其他功能一起从C DLL导出。
我从python中调用此函数。虽然我能够连接DLL我不明白 如何在python中将变量传递给这个函数?
def Acme_getDeviceStatus(self,DeviceStatus):
# b
self.device.Val_GetStatus(0,b) # how to pass and get value in b
# DeviceStatus = b
# return DeviceStatus somehow
答案 0 :(得分:3)
您可以使用例如ctypes或swig来调用Python中的C函数。
from ctypes import *
Val_GetStatus= CDLL('x').Val_GetStatus
Val_GetStatus.argtypes = [c_int,POINTER(c_unit8)]
Val_GetStatus.restype = c_int
deviceStatus = ctypes.c_uint8()
print Val_GetStatus(0, byref(deviceStatus))
print deviceStatus.value
Swig将为您生成一种界面,因此您不必手动执行此操作。