gpt4 book ai didi

python - 使用 python ctypes.CDLL() 从不同目录加载 .dll 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:30 24 4
gpt4 key购买 nike

我必须遵循以下目录结构:

MainProject  
| ...project files
| rtlsdr\
| | rtlsdr.dll
| | ...other .dll's etc.

我正在使用库 ctypes 中的函数 CDLL() 加载 rtlsdr.dll。当我的工作目录是 rtlsdr\ 时它工作正常:

$ cd rtlsdr
$ python
> from ctypes import *
> d = CDLL('rtlsdr.dll')

但是,当我尝试从另一个目录加载文件时:

$ cd MainProject
$ python
> from ctypes import *
> d = CDLL('rtlsdr\\rtlsdr.dll')

我得到一个错误:

WindowsError: [Error 126] The specified module could not be found.

这里有什么问题?

最佳答案

DLL 可能具有不在工作目录或系统路径中的其他 DLL 依赖项。因此,如果未明确指定,系统将无法找到这些依赖项。我找到的最好的方法是将包含依赖项的目录的位置添加到系统路径中:

import os
from ctypes import *
abs_path_to_rtlsdr = 'C:\\something\\...\\rtlsdr'
os.environ['PATH'] = abs_path_to_rtlsdr + os.pathsep + os.environ['PATH']
d = CDLL('rtlsdr.dll')

当前 session 关闭后,PATH 变量将返回到其原始状态。

另一种选择是更改工作目录,但这可能会影响其他模块导入:

import os
os.chdir(abs_path_to_rtlsdr)
# load dll etc...

关于python - 使用 python ctypes.CDLL() 从不同目录加载 .dll 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400804/

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