ctypes 模块

  ctypes赋予了python类似于C语言一样的底层操作能力,通过ctypes模块可以调用动态链接库中的导出函数、构建复杂的c数据类型。

  ctypes提供了三种不同的动态链接库加载方式:cdll(),windll(),oledll()。

 

  HelloWorld.py:

1 import ctypes   #导入ctypes模块    
2 
3 NULL = 0
4 m_string = "Hello World!!!"
5 m_title = "Ctype Dlg"
6 
7 user32 = ctypes.cdll.user32    #加载user32.dll
8 user32.MessageBoxW(NULL,m_string,m_title,NULL)    #调用user32中的MessageBoxW函数

 

 

 

构建C语言数据类型:

 ctypes基本数据类型映射表

参数类型预先设定好,或者在调用函数时再把参数转成相应的c_***类型。ctypes的类型对应如下:

ctypes typeC typePython Type
c_charchar1-character string
c_wcharwchar_t1-character unicode string
c_bytecharint/long
c_ubyteunsigned charint/long
c_boolboolbool
c_shortshortint/long
c_ushortunsigned shortint/long
c_intintint/long
c_uintunsigned intint/long
c_longlongint/long
c_ulongunsigned longint/long
c_longlong__int64 or longlongint/long
c_ulonglongunsigned __int64 or unsigned long longint/long
c_floatfloatfloat
c_doubledoublefloat
c_longdoublelong double floatfloat
c_char_pchar *string or None
c_wchar_pwchar_t *unicode or None
c_void_pvoid *int/long or None
   

对应的指针类型是在后面加上"_p",如int*是c_int_p等等。在python中要实现c语言中的结构,需要用到类。 

 

构建C结构体:

  

 1 //c语言结构体
 2 
 3 struct test
 4 {
 5     int num1;
 6     int num2;       
 7 };
 8 
 9 //python ctypes 结构体
10 from ctypes import *
11 class test(Structure):
12 _fields_ = [
13 ("num1",c_int),
14 ("num2",c_int),
15 ]

 

转载于:https://www.cnblogs.com/vawter/p/5901795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值