好的,我们开始今天的讲座。主题是使用 Python 的 ctypes 库调用动态链接库(DLL 或 .so),并处理 C 语言指针。ctypes 是 Python 的一个外部函数库,它提供了与 C 兼容的数据类型,允许 Python 代码调用 DLL 或共享库中的函数。我们将深入探讨如何在 Python 中使用 ctypes 来实现这一目标,重点关注指针处理。 1. ctypes 基础 首先,我们需要了解 ctypes 的基本用法。ctypes 允许我们加载动态链接库,并定义 C 函数的参数类型和返回类型。 加载动态链接库: import ctypes # Windows # my_dll = ctypes.cdll.LoadLibrary(“my_library.dll”) # 或者 ctypes.WinDLL(“my_library.dll”) # Linux / macOS my_lib = ctypes.cdll.LoadLibrary(“./my_library.so”) # 或者 ctypes.CDLL(“./my_library.so”) # 如果动态链接库位于系统路径中 …
C++ 动态链接库(DLL/SO)的开发与管理
好的,各位观众老爷,今天咱们来聊聊C++动态链接库(DLL/SO)的开发与管理。这玩意儿,说白了,就是把一些常用的代码打包成一个“模块”,可以被多个程序共享使用。就像你家厨房里的锅碗瓢盆,你炒不同的菜都可以用,不用每做一道菜都重新造一套厨具。 一、 为什么要用动态链接库? 不用动态链接库行不行?当然行,就像你每做一道菜都重新买一套锅碗瓢盆一样。但是,这会带来一些问题: 浪费空间: 多个程序都包含相同的代码,导致程序体积膨胀。 更新困难: 如果要修改某个功能,需要重新编译所有使用了该功能的程序。 耦合度高: 程序之间依赖性强,一个程序的修改可能会影响到其他程序。 动态链接库的优势就体现出来了: 节省空间: 多个程序共享同一个动态链接库,减少程序体积。 易于更新: 修改动态链接库后,只需要替换库文件,无需重新编译使用该库的程序。 解耦合: 程序之间依赖性降低,提高了程序的灵活性和可维护性。 二、 DLL和SO的区别? 简单来说,DLL是Windows下的动态链接库,SO是Linux下的动态链接库。它们的作用是一样的,只是文件格式和加载方式不同。 特性 DLL (Windows) SO (L …