python中与C结合开发的技术有哪些?

发布于 2021-08-19 16:49:06

python中与C结合开发的技术整理,含windows开发相关技术

查看更多

浏览量
3042
1 个回答
猫哥
猫哥 项目组成员 2021-08-19
更多问题可加猫哥QQ(632906391)寻求帮助

ctypes

ctypes 是 Python 的外部函数库。它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。

在windows下,ctypes提供了windll对象用于载入动态连接库,Windows会自动添加通常的 .dll 文件扩展名.

windll.kernel32
windll.user32
windll.kernel32.GetModuleHandleA
windll.user32.FinWindowA
windll.user32.FinWindowW
Win32系统的动态库,比如 kernel32 和 user32,通常会同时导出同一个函数的 ANSI 版本和 UNICODE 版本。UNICODE 版本通常会在名字最后以 W 结尾,而 ANSI 版本的则以 A 结尾。 win32的 GetModuleHandle 函数会根据一个模块名返回一个 模块句柄,该函数暨同时包含这样的两个版本的原型函数,并通过宏 UNICODE 是否定义,来决定宏 GetModuleHandle 导出的是哪个具体函数。

ctypes 定义了一些和C兼容的基本数据类型

c_ubyte | unsigned char
c_byte | char

ctypes 暴露了 byref() 函数用于通过引用传递参数(就是传递指针),使用 pointer() 函数也能达到同样的效果,只不过 pointer() 需要更多步骤,因为它要先构造一个真实指针对象。所以在 Python 代码本身不需要使用这个指针对象的情况下,使用 byref() 效率更高

GetClientRect(handle, byref(r))

ctypes --- Python 的外部函数库

发布
问题

分享
好友

手机
浏览

扫码手机浏览