1

根据文件,

在 Linux 上,加载库需要指定包含扩展名的文件名,因此不能使用属性访问来加载库。应该使用 dll 加载器的 LoadLibrary() 方法,或者您应该通过调用构造函数创建 CDLL 实例来加载库:

我正在使用一组外部开发的 python 脚本。它们需要一个相当标准的 lib ( liblzma) 并使用LoadLibraryfromctypes来加载它——通过路径名。我的问题是这些脚本需要在几个不同的 linux 安装上运行,并且将来可能更多。共享库的完整文件名及其liblzma位置因系统而异。我已经针对各种 lib 版本进行了测试,没有发现任何冲突。

我真正需要的是一种方法来确定已安装库的基本名称,以便将适当的名称传递给LoadLibrary.

我考虑过仅ldconfig -p用于打印现有库并解析输出以查找库名称。还有其他想法吗?

诚然,我在这里有点不合时宜。有问题的脚本只是一个较大项目的必需部分。

4

1 回答 1

2

只要库位于加载器搜索路径中,您就可以通过相对名称指定它。

$ ls /usr/lib64/libXt.*
/usr/lib64/libXt.so.6.0.0

>>> ctypes.CDLL('libXt.so.6.0.0')
<CDLL 'libXt.so.6.0.0', handle 26b72b0 at 2723c90>
于 2012-07-16T18:45:20.960 回答