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이 전체 경로를 사용하고 모듈을 성공적으로 가져옵니다.
<code class="python">import ctypes name = ctypes.util.find_library('libuvc') lib = ctypes.cdll.LoadLibrary(name, winmode=0)</code>
'winmode=0'을 지정하면 기본 검색 모드를 우회하고 Python이 예상 위치에서 DLL을 로드하도록 합니다.
위 내용은 Windows 10의 Python에서 \'libuvc.dll\'을 가져올 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!