Windows에서 Python의 DLL 모듈 로드 문제 해결
최근 Windows에서 컴파일된 libuvc DLL을 가져오려는 시도에서 "찾을 수 없습니다"라는 오류가 발생했습니다. 모듈 'libuvc.dll'". ctypes.util.find_library를 사용하여 파일 경로를 올바르게 찾았음에도 불구하고 Python은 해당 파일을 로드하지 못합니다. 문제는 ctypes.cdll.LoadLibrary 함수의 winmode 매개 변수에 있습니다.
Winmode 매개 변수 이해
Python 3.8 이전에는 winmode가 존재하지 않았고 모드는 다음과 같습니다. 0 값에 해당하는 ctypes.DEFAULT_MODE로 직접 설정합니다. Python 3.8에서는 winmode가 도입되었습니다.
winmode가 None으로 설정되면 검색 모드는 기본적으로 nt._LOAD_LIBRARY_SEARCH_DEFAULT_DIRS로 설정됩니다. 이 검색 모드는 환경 변수나 경로에 대한 변경 사항을 고려하지 않습니다.
그러나 winmode를 0으로 설정하면 전체 경로를 사용해야 하며 라이브러리가 성공적으로 로드됩니다. 이 동작은 Microsoft 설명서(https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa)에 설명되어 있습니다.
문제 해결
로드 문제를 해결하려면 다음 코드 조각과 같이 ctypes.cdll.LoadLibrary를 호출할 때 winmode=0을 지정하면 됩니다.
import ctypes name = ctypes.util.find_library('libuvc') lib = ctypes.cdll.LoadLibrary(name, winmode=0)
위 내용은 Windows의 Python 3.8에서 내 DLL 모듈을 로드할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!