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

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

作者: 八神苍月 | 来源:发表于2018-12-10 15:05 被阅读25次

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)

"""

相关文章

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

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

  • Python 函数(2)

    这篇主要总结Python函数参数传递。 背景### 函数的参数传递方式常见的有三种:1、传值调用;2、传指针调用;...

  • 使用ctypes模块在Python代码调用C函数

    使用Python语言进行编程的时候可能会需要调用用C语言开发的库,那么如何调用呢,传递给C函数的参数以及返回值如何...

  • 第二十天

    今天董老师针对昨天的作业,又和好打架延伸了一下指针的运用。讲解了指针如何调用输入函数输出函数,指针如何在字符串比较...

  • 12.20

    今天董老师针对昨天的作业,又和好打架延伸了一下指针的运用。讲解了指针如何调用输入函数输出函数,指针如何在字符串比较...

  • 读书笔记17.06.02【stack】【vector】

    C++中参数传递:按值传递,指针传递和引用传递按值传递:形参是实参的拷贝。指针传递:拷贝指针,被调用函数对指针指向...

  • MOOC大学 实用Python程序设计 W5 字符串和元组

    5.1 字符串和元组 python变量的指针本质 函数参数的传递 字符串的转义字符 字符串的切片(子串) 字符串的...

  • C#与C++类型互转

    一、C#调用DLL文件时参数对应表 二、C#调用C++编写的DLL函数, 以及各种类型的参数传递 如果函数只有传入...

  • C/C++ 函数内部修改形参

    参数传递一般有两种传递方式: 1)值传递----包括(数值传递,指针传递) 数值传值,就是把你的变量的值传递给函数...

  • 无理解javascript 回调函数

    回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/rbnrhqtx.html