Python编程提高:如何调用DLL函数之传递数值、指针与字符串参数

字数 418阅读 243

https://baijiahao.baidu.com/s?id=1615259691934668555&wfr=spider&for=pc



DLL函数的调用——函数参数为字符串情况

例1:如对于下面的函数,返回一个输入字符串的字节长度,其函数C语言的实现代码如下:

在Python中的调用代码如下:

其中,第33行使用c_char_p定义了一个指向char型的指针变量pStr,并赋初值为’abcdef’,第34行将其传入GetStringLength函数返回其长度。

也可以使用下面代码调用:

将GetStringLength函数的输入输出参数分别使用argtypes和restype单独进行声明。

例2:如对于下面的函数,输入输出皆为字符串指针,函数的功能是对于输入pStr1赋值为“StrIn”,对于输出返回一个指向字符串常量“strOut”的指针,其函数C语言的实现代码如下:

在Python中的调用代码如下:

在上面代码中,同样分别对输入输出参数进行了声明。对于输入参数pStr,使用create_string_buffer函数定义了一个字符串缓冲区。对于返回值pChar,在打印输出结果时,将其强制转换为c_char_p类型,取其value值即可。

"""

from ctypes import *

dllpath = "E:\\Python Project\\IPWorker Control\\G729.dll"

#调用dll

Objdll = ctypes.windll.LoadLibrary("dllpath")

#Objdll = ctypes.WinDLL("dllpath")

inputfile = c_char_p("D:\\G729\\1.729")

tempfile = c_char_p("D:\\Temp\\1.tmp")

outputfile = c_char_p("D:\\Wav\\1.wav")

Objdll.G729decode(inputfile , tempfile , outputfile)

"""

推荐阅读更多精彩内容