python加载静态库

时间:2016-12-09 03:56:11

标签: python linux dll

我在加载dll时遇到了一个新问题。加载带有“.so”,“。dll”扩展名的dll时没有任何问题。现在我有一些问题与dll的扩展名为“.a”。它是一个静态库。下面是我的代码

Security_dll = ctypes.cdll.LoadLibrary("./staticlibraryname.a")
顺便说一句,我的os env是一个linux open suse。我尝试这样做时得到的确切错误信息是:

File "module3.py", line 3, in <module>
Security_dll = ctypes.cdll.LoadLibrary("./libSecurityProductionStaticlib.a")
File "/usr/lib64/python2.7/ctypes/__init__.py", line 440, in LoadLibrary
return self._dlltype(name)
File "/usr/lib64/python2.7/ctypes/__init__.py", line 362, in __init__
self._handle = _dlopen(self._name, mode)
OSError: ./libSecurityProductionStaticlib.a: invalid ELF header

1 个答案:

答案 0 :(得分:2)

您无法将静态库加载到正在运行的代码中。只能加载动态链接库(.so和.dll)。静态和动态库具有不同的格式,属性和用途。静态库只能在编译时与其他对象链接,但不能在运行时链接。 Linux上的动态库本质上是一个没有main函数的ELF文件。静态库是函数的存档。