gpt4 book ai didi

python - ctypes 加载具有依赖关系的 c 共享库

转载 作者:IT老高 更新时间:2023-10-28 20:32:21 37 4
gpt4 key购买 nike

在 Linux 上,我有一个依赖于其他库的 c 共享库。 LD_LIBRARY_PATH 已正确设置以允许链接器加载所有库。当我这样做时:

libgidcwf    = ctypes.cdll.LoadLibrary(libidcwf_path)

我收到以下错误:

Traceback (most recent call last):
File "libwfm_test.py", line 12, in <module>
libgidcwf = ctypes.cdll.LoadLibrary(libidcwf_path)
File "/usr/lib/python2.5/ctypes/__init__.py", line 431, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python2.5/ctypes/__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: path-to-my-lib/libwav.so: undefined symbol: ODBCGeneralQuery

似乎 LD_LIBRARY_PATH 在这里没有任何作用。有没有办法让这些依赖库“可加载”?

提前感谢您的帮助。

最佳答案

似乎 libwav.so 没有声明它依赖于定义 ODBCGeneralQuery 的库。尝试运行 ldd path-to-my-lib/libwav.so 并查看是否缺少某些内容。如果这是您正在构建的共享库,则应将 -llibname 添加到链接命令(类似于 gcc -shared -o libwav.so a.o b.o c.o) 用于库代码使用的每个库。以这种方式被原始共享库引用的任何其他库也应自动加载。

关于python - ctypes 加载具有依赖关系的 c 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327344/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com