python嵌套C语言、调用外部C的dll,python实参如何传递并修改??

# -*- coding: cp936 -*-
import ctypes
lib=ctypes.CDLL(r'C:\Users\Administrator\Desktop\卡驱动\myKeyApi.dll')
handle=0#设备句柄
ret=2
ret = lib.XF_EnumDev(0,'0')
ret = lib.XF_OpenDev(0,handle)#dll原型为int XF_OpenDev(int index, void* hHandle);作用是修改hHandle的值,此值为设备的句柄,python中如何设置此变量hHandle
#若用python调用dll中此函数则lib.XKF_OpenDev()中参数如何设置???????若按照我上面的设置则#运行报下列错误
#python中如何通过调用改变实参值啊(C语言可以改变地址的值)如此例中如何通过调用改变handle的值
#python中的变量与C语言中的变量关系,特别是地址方面

#运行会报如下错误:
#Traceback (most recent call last):
# File "C:/Users/Administrator/Desktop/help.py", line 7, in <module>
# ret = lib.XF_OpenDev(0,handle)#dll原型为int XF_OpenDev(int index, void* hHandle);
#WindowsError: exception: access violation writing 0x00000000

第1个回答  2013-10-08
handle = ctypes.c_int(0)
ret = lib.XF_OpenDev(0, ctypes.byref(handle))

handle作为指针传进去后如果被改掉,返回的是一个c_int 或者c_long, 你可以通过handle.value来获得可以在python中灵活运用的真正的python整形
第2个回答  2013-10-09
前几天,看一个share,有人分享了一个新东西叫swig,可以帮你很方便的做这种跨语言调用。
第3个回答  2013-10-10
我是来看答案的~

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网