在python中的共享库上使用ctypes.CDLL时出错

时间:2018-05-09 03:14:04

标签: python ctypes

我有一个共享库文件是更大程序的一部分。我似乎在所有共享库中都遇到了很多这样的错误,所以我认为我已经将我的问题缩小到与之相关的范围。

我有一个名为libMdsdcl.so的文件。仅出于测试目的,我将它自己放在一个文件夹中并运行以下行来重复错误:

+---+---+---+---+---+---+------------+------------+
|a1 |b1 |a2 |b2 |a3 |b3 |computation1|computation2|
+---+---+---+---+---+---+------------+------------+
|-1 |F  |-4 |C  |-8 |A  |-5          |FCA         |
|-4 |C  |-8 |A  |-11|G  |-12         |CAG         |
|-8 |A  |-11|G  |-18|Z  |-19         |AGZ         |
+---+---+---+---+---+---+------------+------------+

这不是我的代码,而是代码的一部分,似乎适用于安装它的每个人。基于其他类似的问题,我检查了我的python安装和文件的架构,它们都是64位。我的libreadline有什么问题吗?我实际上刚刚在此之前升级到Ubuntu 18.04。

作为参考,这是MDSplus的一个小小的机会,有人看到它熟悉它。

1 个答案:

答案 0 :(得分:0)

您没有展示如何填充name

libname = c.CDLL(name)

您可能需要确保从正确的目录开始。 os.path.dirname(__file__)将为您提供正确的目录。

但通常在这种情况下我会看到类似的东西:

libname = cdll.LoadLibrary(os.path.abspath("libreadline.so.6"))

我认为问题是你的路径,因为你没有给出共享对象的实际扩展。尝试:

name = "libMdsdcl.so"  # or whatever it is called

根据所显示的有限信息,我无法确定一些想法。