首页 / 知识
python调用dll
2023-11-12 13:40:00
在python中调用dll文件中的接口比较简单,实例代码如下:
如我们有一个test.dll文件,内部定义如下:
extern"C"
{
int__stdcalltest(void*p,intlen)
{
returnlen;
}
}
在python中我们可以用以下两种方式载入
1.
importctypes
dll=ctypes.windll.LoadLibrary('test.dll')
2.
importctypes
dll=ctypes.WinDll('test.dll')
其中ctypes.windll为ctypes.WinDll类的一个对象,已经在ctypes模块中定义好的。在test.dll中有test接口,可直接用dll调用即可
nRst=dll.test()
printnRst
由于在test这个接口中需要传递两个参数,一个是void类型的指针,它指向一个缓冲区。一个是该缓冲区的长度。因此我们要获取到python中的字符串的指针和长度
#方法一:
sBuf='aaaaaaaaaabbbbbbbbbbbbbb'
pStr=ctypes.c_char_p()
pStr.value=sBuf
pVoid=ctypes.cast(pStr,ctypes.c_void_p).value
nRst=dll.test(pVoid,len(pStr.value))
#方法二:
test=dll.test
test.argtypes=[ctypes.c_char_p,ctypes.c_int]
test.restypes=ctypes.c_int
nRst=test(sBuf,len(sBuf))
如果修改test.dll中接口的定义如下:
extern"C"
{
int__cdecltest(void*p,intlen)
{
returnlen;
}
}
由于接口中定义的是cdecl格式的调用,所以在python中也需要用相应的类型
1.
importctypes
dll=ctypes.cdll.LoadLibrary('test.dll')
##注:一般在linux下为test.o文件,同样可以使用如下的方法:
##dll=ctypes.cdll.LoadLibrary('test.o')
2.
importctypes
dll=ctypes.CDll('test.dll')
以上内容为大家介绍了python调用dll,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
linux存文件的命令?
linux存文件的命令?,系统,工作,名称,标准,信息,管理,数据,命令,文件,传播,linux查看当前的主机名并保存到c.txt文件中?查看主机名查看当前系统建立文件的linux命令?
建立文件的linux命令?,名字,系统,文件,命令,文件名,时间,名称,首次,密码,目录,linux怎么创建目录和文件1、进入linux系统并终端,输入命令”cd/“linux解压rar文件命令?
linux解压rar文件命令?,电脑,标准,文件,命令,系统,管理,名称,文件夹,目录,文件名,Linux文件相关命令1、命令一:cat cat命令应该是在Linux中查看下载文件命令linux?
下载文件命令linux?,软件,系统,网络,工具,中心,服务,情况,名称,设备,代理,LINUX系统如何下载东西?1、wget是linux下一个从网络上自动下载文件linux命令行传文件?
linux命令行传文件?,手机,电脑,百度,数据,密码,位置,命令,文件,目录,数据库,Linux命令行上传文件到百度网盘在下边图示位置粘贴授权码,耐心等待linux命令代码怎么看?
linux命令代码怎么看?,时间,系统,代码,命令,状态,工具,情况,电脑,实时,基础,linux查看系统命令是什么有的,Linux中有多个命令可以用于查看文件linux命令行拆分文件?
linux命令行拆分文件?,系统,软件,文件,工作,前缀,命令,指令,路径,文件名,两个,linux文件拆分命令1、文件系统操作命令: cat:可以显示文件的内容在linux下建文件命令?
在linux下建文件命令?,时间,名字,文件,命令,名称,首次,系统,文件名,目录,终端,linux怎么批量创建文件?1、首先,连接相应linux主机,进入到linux命linux显示文件名命令?
linux显示文件名命令?,信息,时间,命令,系统,数据,地址,状态,文件,标准,工具,Linux基本命令-2021-07171、head 是用来显示文件开头的命令 选项:linux中改文件名命令?
linux中改文件名命令?,名字,命令,文件,软件,位置,系统,文件名,目录,目标,选项,linux中修改文件名命令1、mv较简单的处理命令:mvmv原文件名新文新建文件夹命令linux?
新建文件夹命令linux?,名字,时间,文件,命令,文件名,首次,名称,系统,终端,目录,创建文件linux命令1、终端下键入:touch加文件名,这样就创建了一个linux改文件属主命令?
linux改文件属主命令?,系统,标准,命令,文件,用户组,所有者,终端,用户,所在,目录,Linux文件相关命令1、命令一:cat cat命令应该是在Linux中查看