- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个同时具有 Python 版本 2.6.5 和 2.7.1 的系统,我注意到一个 LoadLibrary 有效,另一个无效。
Python 2.7.1 (r271:86832, Nov 30 2010, 10:03:07)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import cdll
>>> cdll.LoadLibrary("./mylib.so")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/ctypes/__init__.py", line 431, in LoadLibrary
return self._dlltype(name)
File "/usr/local/lib/python2.7/ctypes/__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: ./mylib.so: undefined symbol: compress2
并在 2.6.5 地工作:
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import cdll
>>> cdll.LoadLibrary("./mylib.so")
<CDLL './mylib.so', handle 98bbd88 at b785c94c>
有谁知道找出为什么 python 2.7.1 不工作的好方法?
最佳答案
出于某种原因,Python ctypes 对库依赖性非常了解。我仍然不明白为什么 2.6.5 在上面工作,但执行以下操作可以修复它:
在编译 mylib.so 时,我需要明确指定或链接到 zlib 库。由于“compress2”来自 zlib 库,我可以通过以下方式完成:
g++ blah blah mylib.so blah blah -lz
-lz 链接到 zlib 库,如果您执行“ldd mylib.so”,它就会显示出来。这会修复它并允许“LoadLibrary”不会失败。
关于Python ctypes.cdll.LoadLibrary 在 2.6.5 和 2.7.1 之间的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404974/
我有一个由两个 dll 文件和一个 python 包装器组成的库。 我目前有基于这三个文件的代码,它们与我的主 python 文件位于同一父目录中。我现在正试图在继续开发之前重构一些东西,并希望将所述
我正在研究连接触觉机器人和眼动仪。因此,两者都有自己的编程要求,即眼动仪软件基于 Python,并且是我编程的主要语言。我们的触觉机器人有一个 C 语言的 API,所以我不得不用 C 语言编写一个包装
来自https://docs.python.org/3/library/ctypes.html#loading-shared-libraries Shared libraries can also b
我正在尝试使用编译为 /usr/local/lib/libName.so 的库,但在运行需要此文件的 python 脚本时: from ctypes import CDLL [...] __lib =
在 Lubuntu 18.04 上 $ python3 >>> from ctypes import * >>> libc = CDLL("libc.so.6") >>> libc.printf 我
根据文档, On Linux, it is required to specify the filename including the extension to load a library, so
恐怕我在互联网上找不到一个简单的答案,所以也许将来会有一个因为这个问题! 我正在使用 pywiiuse,它是 Windows 上 C wiiuse 库的 python 包装器。通过在源目录中包含 dl
我有一个用于与 C 库交互的 Python 2.7 GUI。我在 GUI 中进行了一系列设置,然后按下“开始”按钮。然后,我正在查看结果,不再需要库代码。但我想在更改库时保留所有 GUI 状态。 我用
我正在尝试使用 ctypes 通过 Python 移植一些 C dll(FANUC FOCAS Library - for CNC)代码,所以我编写了移植代码。 (如下),但是在加载DLL和调用函数时
我有以下代码 import ctypes lib1 = ctypes.cdll.LoadLibrary("./mylib.so") # modify mylib.so (code generation
我正在尝试使用 ctypes 并两次加载相同的编译 Fortran 库,这样我就有了它的两个独立实例,这样库包含的任何模块变量都不会存储在相同的内存位置。描述的一般解决方案(例如,此处:https:/
ctypes.cdll.LoadLibrary() 调用如何与作为参数传入的 None 一起工作?当我尝试下面的代码时,math 库似乎会自动加载: >>> import ctypes >>> lib
我是 Python 的初学者。我使用的python版本是3.2.1.1我正在尝试按照 docs.python.org 中的教程学习 ctypes 在交互式提示中, import ctypes libc
问候, 我正在尝试修改 zlib 和测试行为,所以我编写了 mylib.c 和 mylib.h。这形成了一个用于在内部调用 zlib 函数的包装器(如 InflateInit2())。我正在使用以下命
我必须遵循以下目录结构: MainProject | ...project files | rtlsdr\ | | rtlsdr.dll
我用c写了一个dll库,用vs2017 64位编译,用python3.6 64位加载试试。但是,对象的成员变量地址被截断为 32 位。 这是我的 sim.c 文件,它被编译为 sim.dll: cla
我正在尝试让一些开源学术代码正常工作(项目主页是 here )。它是一个带有(非常)薄的 python 包装器的大型 C++ 代码库,它使用 CDLL 加载 C++ 并调用一些可用于允许代码的原始 p
因此,作为一名 Linux 用户,我在 Windows 上遇到了一些我无法解释的非常令人费解的事情。 我有一个类似于此示例的项目结构: D:\PROJECT | | tolkien.py |
我是Python初学者。当我尝试加载外部 DLL(由其他人在 Windows 中编译)时,如下所示: from ctypes import * import cv2, cv as cv Painter
我刚刚开始在 Linux 上使用 gcc。我正在学习教程 here , 除了我使用的是 g++ 编译器。 你好_fn.cpp #include #include "hello.h" void hel
我是一名优秀的程序员,十分优秀!