Python에서 DLL 모듈을 가져오는 중 문제 발생
Python에서 'libuvc.dll' 모듈을 가져오려고 할 때 문제가 발생했습니다. Windows 10. Linux에서 동일한 Python 버전을 사용하여 라이브러리를 성공적으로 컴파일하고 가져왔음에도 불구하고 이제 Windows에서는 문제에 직면하게 됩니다.
발생한 오류는 Python이 'libuvc.dll'을 찾을 수 없음을 의미합니다. 모듈은 'ctypes.util.find_library('libuvc')'에 의해 검색된 경로에 있습니다. 그런데 해당 위치에 파일이 존재하는 것을 확인했습니다.
범인은 'cdll.LoadLibrary' 함수에 있습니다. Python 3.8 이전 버전에서는 'winmode' 매개변수가 존재하지 않고, 'mode'를 직접 사용했습니다. 'mode'의 기본값은 'ctypes.DEFAULT_MODE'로, 0에 해당합니다.
그러나 Python 3.8 이상에서는 DLL 검색 모드를 지정하기 위해 'winmode' 매개변수가 도입되었습니다. 기본적으로 'None'으로 설정되어 있으며 이는 'nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS'에 해당합니다. 안타깝게도 이 검색 모드는 'os.environ['PATH'], sys.path' 및 'os.add_dll_directory'에 대한 수정 사항을 무시합니다.
해결책:
이 문제를 해결하려면 'LoadLibrary' 함수에서 'winmode' 매개변수를 명시적으로 0으로 설정하십시오. 이렇게 하면 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