我昨天使用 SSH 协议连接到另一台计算机,并尝试通过 Python 加载一个 SO 文件(将编译为 C)。这是我在 CLI 中得到的:

“OSError:”旁边正在请求的文件 (libLMR_Demodulator.so) 与我要加载的文件 (libDemodulatorJNI_lmr.so) 位于同一目录中。
python代码(v3.5.2)如下:
import ctypes
sh_obj = ctypes.cdll.LoadLibrary('./libLMR_Demodulator.so')
actual_start_frequency = sh_obj.getActualStartFrequency(ctypes.c_long(0))
print('The Current Actual Frequency Is: ' + str(actual_start_frequency))
Run Code Online (Sandbox Code Playgroud)
@Charles Duffy 是对的。问题来自依赖关系。您可以通过命令验证这一点:
ldd libLMR_Demodulator.so
Run Code Online (Sandbox Code Playgroud)
您有多种方法可以解决此问题:
/lib,/usr/lib路径中,或者直接将它们安装到您的系统中。/etc/ld.so.conf文件中,然后运行ldconfig以刷新缓存。用于LD_LIBRARY_PATH添加库的路径,然后尝试运行您的脚本
LD_LIBRARY_PATH=[..path] python [script.py]
Run Code Online (Sandbox Code Playgroud)或者
export LD_LD_LIBRARY_PATH=[..path]
python [script.py]
Run Code Online (Sandbox Code Playgroud)
您可以查看手册dlopen以获取更多详细信息。
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |