zoukankan      html  css  js  c++  java
  • ctypes库调用dll的个人见解

    最近着手开发一个小东西涉及到了API接口的知识点,
    第一次使用到了ctypes库,在网上找了一大圈,基本都是讲add.dll之后就没了。
    就像下面这个:

    from ctypes import *
    
    dll = CDLL(“test.dll”)  # 调用 test.dll
    dll.add(10, 30)   # 调用 add 函数
    

     
    而我需要的读出一张ACR122U卡的卡号,于是愚笨地写下了这段代码:

    from ctypes import *
    
    dll = CDLL('readcard.dll')
    print(dll.GetCard_No())
    

    结果很尴尬,每次读出来的都是不一样的。。。。。。
     
    后来我才知道,原来它返回的是一个动态地址!!!
    于是我加了一行代码:

    from ctypes import *
    
    dll = CDLL('readcard.dll')
    dll.GetCard_No.restype = c_char_p  # 返回值的类型是 一个具有结束符号的字符串
    print(dll.GetCard_No())
    

      
    输出结果如我所料:完美~~
     
    当然,如果你觉得有个d在前面憋得慌,只需要把最后一行改成print(dll.GetCard_No().decode())就可以了。
      
    最后附上参考网址,里面讲的很清楚,感谢。

  • 相关阅读:
    AD 485、422电路
    AD 差分
    思维导图
    68 二叉树的最近公共祖先
    65. 不用加减乘除做加法
    64. 求1+2+…+n
    10- I. 斐波那契数列
    11&12. 旋转数组的最小数字
    12. 矩阵中的路径
    13. 机器人的运动范围
  • 原文地址:https://www.cnblogs.com/WoLykos/p/9908182.html
Copyright © 2011-2022 走看看