首页 > 代码库 > ctypes 模块
ctypes 模块
ctypes赋予了python类似于C语言一样的底层操作能力,通过ctypes模块可以调用动态链接库中的导出函数、构建复杂的c数据类型。
ctypes提供了三种不同的动态链接库加载方式:cdll(),windll(),oledll()。
HelloWorld.py:
1 import ctypes #导入ctypes模块 2 3 NULL = 04 m_string = "Hello World!!!"5 m_title = "Ctype Dlg"6 7 user32 = ctypes.cdll.user32 #加载user32.dll8 user32.MessageBoxW(NULL,m_string,m_title,NULL) #调用user32中的MessageBoxW函数
构建C语言数据类型:
ctypes基本数据类型映射表
参数类型预先设定好,或者在调用函数时再把参数转成相应的c_***类型。ctypes的类型对应如下:
ctypes type | C type | Python Type |
c_char | char | 1-character string |
c_wchar | wchar_t | 1-character unicode string |
c_byte | char | int/long |
c_ubyte | unsigned char | int/long |
c_bool | bool | bool |
c_short | short | int/long |
c_ushort | unsigned short | int/long |
c_int | int | int/long |
c_uint | unsigned int | int/long |
c_long | long | int/long |
c_ulong | unsigned long | int/long |
c_longlong | __int64 or longlong | int/long |
c_ulonglong | unsigned __int64 or unsigned long long | int/long |
c_float | float | float |
c_double | double | float |
c_longdouble | long double float | float |
c_char_p | char * | string or None |
c_wchar_p | wchar_t * | unicode or None |
c_void_p | void * | 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 ]
ctypes 模块
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。