zoukankan      html  css  js  c++  java
  • ctypes使用

    ctypes是python的兼容库, 提供c的数据类型兼容,可方便调用c动态库接口
    c动态库在linux下为so,windows下为dll

     ctypes模块中有三种不同的动态链接库加载方式:cdll, windll, oledll。不同之处在于链接库中的函数所遵从的函数调用方式(calling convention)以及返回方式有所不同。
        cdll用于加载遵循cdecl标准函数调用约定的链接库。windll则用于加载遵循stdcall调用约定的动态链接库。oledll与windll完全相同,只是会默认其载入的函数会统一返回一个Windows HRESULT错误编码。

    函数调用约定指的是函数参数入栈的顺序、哪些参数入栈、哪些通过寄存器传值、函数返回时栈帧的回收方式(是由调用者负责清理,还是被调用者清理)、函数名称的修饰方法等等。基本上我们最常见的调用约定就是cdecl和stdcall两种。
    cdecl规定函数参数列表以从右到左的方式入栈,且由函数的调用者负责清除栈帧上的参数。stdcall的参数入栈方式与cdecl一致,但函数返回时是由被调用者自己负责清理栈帧。而且stdcall是Win32 API函数所使用的调用约定
    参考:
      https://zhidao.baidu.com/question/1371711400354314219.html
      https://www.cnblogs.com/zhangxian/articles/4586793.html
    from ctypes import CDLL
    
    if __name__ == '__main__':
        h = CDLL('msvcrt.dll')
        h.printf('a=%d,b=%d,a+b=%d', 1, 2, 1 + 2)
  • 相关阅读:
    点分治
    主席树
    可持久化并查集
    可持久化线段树
    网络流
    AC自动机
    线性基
    快速幂
    素数筛
    扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/zhanghaibin16/p/13367073.html
Copyright © 2011-2022 走看看