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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5b计算机联锁系统_力控科技油库调度管理系统应用案例

一 、 项目概述"油库储油罐区具有分布空间范围广、安全防爆要求高、监控点多、布线复杂,自动化系统的水平和垂直集成难度大等特点。系统采用先进测控与管理技术,围绕储油罐区自动计量、监测与管理,进行储油罐区监测控制与数据采集系统的…

集合框架(九)----Map

从这篇开始就要学习Map了! 先来看一下Map的继承体系: 如君所见,Maps的体系没有像Collections那么庞大 在接下来的两篇博文中将分别介绍HashMap和TreeMap 至于WeakHashMap,个人感觉文档中说的相当含糊,理解起来很有难度&#xff0c…

cpu java poi 导出_让 Java 开发更简单,提高工作效率 | Gitee 项目推荐

1、项目名称:基于 Spring Boot 的权限管理系统项目简介:Good 权限管理系统是作者学习 springBoot 时基于 springBoot 开发的一套轻量级的权限系统,其目的是形成一套属于自己的通用的开发框架 以后来项目的时候就可以直接基于此平台进行开发&a…

砝码称重2

【题目描述】 有n个砝码,现要称一个质量为m的物体,询问最少需要挑出几个砝码来称,一个砝码最多只能挑一次。 【输入描述】第一行输入两个整数n和m; 接下来n行,每行输入一个整数表示砝码的重量。 【输出描述】输出一个整…

给图片下方加水印_别再看不起美图秀秀啦,想要做长图,批量加水印,用它超级方便...

Hello大家好,我是撒娇的小肉片。时隔超长时间的更新,不知道还有多少人记得我哈哈。今天想要和大家分享的是如何批量加水印,如何拼成长图,操作简单,你值得拥有哦~最重要的是免费!免费!完全免费&a…

加载顺序_Java的web.xml组件加载顺序

在配置项目组件的过程中, 了解Tomcat加载组件顺序很有必要。 例如某些框架如Quartz的集群功能需要数据库的支持, 数据库的加载肯定要在框架组件加载之前。经过查阅和Debug发现, web.xm组件加载顺序为:context-param -> listene…

20145326蔡馨熠《信息安全系统设计》第2周学习总结

20145326蔡馨熠《信息安全系统设计》第2周学习总结 教材学习内容总结 一、计算机系统与链接 信息就是位上下文,都是由一串位表示的,区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。ASCII字符构成的文件是文本文件,所有其他文件…

c#解析json字符串数组_C#解析JSON字符串总结

JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串。操作JSON通常有以下几种方式:1. 原始方式:按照JSON字符串自己来解析。2. 通用方式【★★★★★】:这种方式是使用开源的类库Newtonsoft.Json(下载地址http…

/etc/fstab 文件配置项简单介绍

Untitled本文来源&#xff1a;https://wiki.archlinux.org/index.php/Fstab_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 查看文件系统分区表。fstab 全称为file systems table cat /dev/fstab /etc/fstab# <file system> <dir> <type> <…

为什么不敢和别人竞争_净空法师开示:学老实,在社会上不能跟人竞争吗? - 如是我闻佛教网...

净空法师开示 - 学老实&#xff0c;在社会上不能跟人竞争吗&#xff1f;下面&#xff0c;「又《十住毘婆沙论》曰&#xff1a;若人疾欲至不退转地者&#xff0c;应以恭敬心&#xff0c;执持称名号。」这几句话在这个地方提醒我们&#xff0c;假使有个人想很快速就能得到不退转…

python中a and b什么意思_Python中的a+=b和a=a+b之间的区别是什么?

我一直以为ab和aab是一样的&#xff0c;毕竟效果是一样的嘛。后来我发现并不是这么回事&#xff1f;我发现当变量是不可变对象时&#xff0c;ab和aab是一样的&#xff0c;不过我注意到了前后两个a已经不是同一个对象了。而当变量是可变对象时&#xff0c;虽然ab和aab的效果是一…

快速提高 Vi/Vim 使用效率的原则与途径

Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器。因其强大的功能和高效的操作&#xff0c;Vi/Vim 也成为众多 Unix/Linux 用户、管理员必须掌握并熟练使用的编辑工具之一。尤其是在没有图形界面的情况下&#xff0c;更是离不开 Vi/Vim。Vi/Vim 命令非常多、用法极为灵活&a…

5和6 objbc oracle_Oracle测试题

1) PL/SQL块中可以使用下列(BC)命令。(选择两项)a) TRUNCATEb) DELETEc) SA VEPOINTd) ALTER TABLE2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是()〔选择一项〕a) GRANT CHANGE ON SCOTT.EMP TO SAb) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SAc) GRANT UPDA TE (SAL) ON…

Bash 入门教程10-处理用户输入

用户输入参数是程序运行的必要条件&#xff0c;如何在Bash中调用输入的参数&#xff0c;将Bash和GCC联合调试&#xff0c;这是linux工程师必备的一个能力。 $./shawn 10 30 这是一个很典型的例子&#xff0c;后面两个就是传入bash的命令行参数。 bash shell 会将一些成为位置参…

存放在外存上的数据关机后_小鑫话题 | 惊了!关机后SSD会丢数据?

今天小鑫在群里看到一个很有趣的话题&#xff0c;是关于SSD和HDD哪个更好的讨论。这个话题小鑫都已经见过不下十次了&#xff0c;但是今天小鑫看到了一句以前从没有看到的言论。(某交流群截图)看到这里&#xff0c;小鑫觉得网络上的“标题党”&#xff0c;可能已经在大做文章了…

python:装饰器

1.情景引入。 现在已经完成了一个python项目&#xff0c;但是我们为了安全起见&#xff0c;我们需要加入验证机制。不是所有人都能调用函数 原始源代码def f1():print f1def f2():print f2def f3():print f3 由于必须遵循开发闭包的原则&#xff0c;所以我们应该尽可能的是不去…

mysql sys exec_python - 使用MySQL UDF执行命令-sys_exec不起作用 - 堆栈内存溢出

我正在尝试从MariaDB服务器运行python脚本。 我已经为此安装了mysqludf库。 我正在尝试使用sys_exec函数运行脚本&#xff0c;但是没有结果。 我已经创建了测试文件&#xff0c;它只是一个带有信息“ DONE”的.txt文件。我以root用户身份执行命令&#xff0c;因此我拥有所有特权…

2、Redis入门介绍

1、什么是Redis Redis&#xff1a;REmote DIctionary Server(远程字典服务器) 是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的(key/value)分布式内存数据库&#xff0c;基于内存运行。并支持持久化的NoSQL数据库&#xff0c;是当…

Coursera公开课-Machine_learing:编程作业7

这周的编程作业主要是两方面内容。 1.K-means聚类。 2.PCA&#xff08;Principle Component Analys&#xff09;主成分分析。 方式主要是通过对图像的聚类实现压缩图像&#xff0c;后来发现PCA也可以通过对主特征值的提取实现压缩图像的目的。很有意思&#xff0c;具体的内容参…

CF722D. Generating Sets[贪心 STL]

D. Generating Setstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a set Y of n distinct positive integers y1, y2, ..., yn. Set X of n distinct positive integers x1, x2, ..., xn is sa…