为什么 DLL 没有像其他库一样导入到 python 脚本中?

Why DLL is not imported in the python script as the other libraries?

我知道 DLL 是一个有方法的库,类,... 据我所见,使用它的内容,它被加载到 python 但没有像 numpy 这样的其他库导入。 这是否意味着它不能导入并且必须加载?如果是这样,为什么?

DLL 本质上不同于 python 模块(例如 numpy)。 python 模块只是一个包含 python 代码的文件,如果导入相应的模块就可以使用。如果你输入

import numpy

然后执行 python 安装目录中某处的 python 文件,定义的函数、类 和对象可以在调用 python 程序中使用。

DLL 是包含已编译函数和对象的共享库。 DLL 通常是通过将 C 或 C++ 代码编译到共享库中创建的,但也可以从其他编程语言构建。 python 解释器不能只读取和执行它们,因为那里没有 pyhton 代码。这就是为什么您不能使用 import 语句导入 DLL 的原因。

但这并不意味着在 python 中无法导入 DLL 函数。 python 标准库提供了 ctypes 模块,允许您在运行时加载 DLL 并调用其中的函数。但是,由于 DLL 通常对 python 对象一无所知,因此 ctypes 模块中有很多类型转换,您必须使用它们将 python 变量转换为 C 数据如果要将它们传递给 DLL 中的函数,请使用类型。可以在 python standard library documentation.

中找到有关此的更多信息

请注意,例如 python 模块 numpy 也可能在后台加载 DLL。因此,仅仅因为您导入了一个 python 模块,并不意味着没有加载任何 DLL。事实上,用 C 或 C++ 编写的库通常被编译成 DLL,然后还提供一层薄薄的 python 代码(可以作为 python 模块导入)来加载该 DLL,进行类型转换并调用其中的函数。你在问题中提到的方法和类很可能来自这样的接口模块。