>  기사  >  백엔드 개발  >  Windows의 Python 3.8에서 내 DLL 모듈을 로드할 수 없는 이유는 무엇입니까?

Windows의 Python 3.8에서 내 DLL 모듈을 로드할 수 없는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-28 21:29:02683검색

Why Can't I Load My DLL Module in Python 3.8  on Windows?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.