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)
"""