在 Python 中导入 DLL 模块时出现问题
您在尝试在 Python 中导入“libuvc.dll”模块时遇到了问题Windows 10。尽管在 Linux 上使用相同的 Python 版本成功编译和导入了库,但您现在在 Windows 上遇到困难。
您遇到的错误遇到的情况表明Python无法在“ctypes.util.find_library('libuvc')”检索的路径中找到“libuvc.dll”模块。但是,您已经验证了该位置是否存在该文件。
罪魁祸首在于“cdll.LoadLibrary”函数。在3.8之前的Python版本中,'winmode'参数不存在,直接使用'mode'。 'mode' 的默认值为 'ctypes.DEFAULT_MODE',对应于零。
但是,在 Python 3.8 及更高版本中,引入了 'winmode' 参数来指定 DLL 搜索模式。默认情况下,它设置为“None”,对应于“nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS”。不幸的是,这种搜索模式会忽略对 'os.environ['PATH']、sys.path' 和 'os.add_dll_directory' 的修改。
解决方案:
要解决此问题,请在“LoadLibrary”函数中将“winmode”参数显式设置为零。这将强制Python使用完整路径并成功导入模块。
import ctypes
name = ctypes.util.find_library('libuvc')
lib = ctypes.cdll.LoadLibrary(name, winmode=0)
通过指定 'winmode=0',您可以绕过默认搜索模式并确保 Python 从预期位置加载 DLL。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3