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



我知道DLL是一个包含方法、类,。。。就我所看到的使用它的内容而言,它是在python中加载的,但不是像numpy这样的其他库那样导入的。这是否意味着它不能导入,必须加载?如果是这样的话,为什么?

DLL本质上不同于python模块(如numpy(。python模块只是一个包含python代码的文件,如果导入了相应的模块,则可以使用该文件。如果您键入

import numpy

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

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

然而,这并不意味着在python中导入DLL函数是不可能的。python标准库提供了ctypes模块,允许您在运行时加载DLL并调用其中的函数。但是,由于DLL通常对python对象一无所知,因此ctypes模块中有很多类型转换,如果您想将python变量传递给DLL中的函数,则必须使用这些转换将python变量转换为C数据类型。有关这方面的更多信息可以在python标准库文档中找到。

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

最新更新