Python调用Dll学习过程

本文详细记录了使用Python调用动态链接库(DLL)的学习过程,从基础知识到实际操作,包括如何导入DLL、调用DLL函数以及解决可能出现的问题。通过实例解析,深入理解Python与DLL交互的机制。
摘要由CSDN通过智能技术生成
from ctypes import *

try:

    # 导入库dll,后缀名不用加上去,导入库dll函数为CDLL
    lib = CDLL("testDll")
    lib.TsetCtypes()
    lib.TsetCtypes_number(101, c_float(99.1), True)  # c_float转换浮点数

    asda_b = b"asdasd"
    lib.TsetCtypes_StringA(asda_b, len("asdasd"))  # b转换字符串,这个是byte字节
    # lib.TsetCtypes_StringA(asda_b, len("asdasd"))  # b转换字符串,这个是byte字节

    wstr = "ctypes"
    wstr_w = c_wchar_p(wstr)  # 宽字符
    lib.TsetCtypes_StringW(wstr, len(wstr))

    # 字符串是不能更改的,如果需要更改,重新定义一个BUFFER
    buf = create_string_buffer(100)
    lib.TsetCtypes_Buffer(buf)
    # print(buf.raw,buf.value,len(buf))

    # 测试函数返回int类型
    # int类型的不需要做数据类型的转接,可以直接返回值使用
    A = lib.TestReturnInt()
    print('TestReturnInt is :', A)

    # 测试函数返回byte字符串byte
    # 返回的值就是byte类型的。
    lib.TestReturnChar.restype = c_char_p;
    A1 = lib.TestReturnChar()
    print('TestReturnChar is :', A1)

    # 测试函数返回宽字符串
    # 返回的值就是类型的str类型的。
    lib.TestReturnWChar.restype = c_wchar_p;
    A2 = lib.TestReturnWChar()
    print(type(A2))
    print('TestReturnWChar is :', A2)

    # 测试函数返回指针类型POINTER
    lib.TestPointer.argtypes = (POINTER(c_float),)  # 传输类型需要传递元组
    lib.TestPointer.restype = POINTER(c_int)  # 返回指针类型
    A3_float = c_float(88.8)
    print('begin A3_float = ', A3_float)
    # byref返回指针
    re = lib.TestPointer(byref(A3_float))  # 传入浮点数的指针,对指针所对用的地址进行更改
    print(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值