ctypes로 Python-DLL 나누기
소프트웨어 개발 영역에서 종종 DLL로 저장되는 외부 라이브러리를 활용하는 기능 파일을 사용하여 특정 프로그래밍 언어의 기능을 확장할 수 있습니다. 이는 모국어 기능이 특정 요구 사항에 미치지 못하는 경우에 적합합니다.
Python을 사용하고 DLL 파일 내의 기능에 액세스하려고 할 때 이러한 시나리오 중 하나가 발생합니다. 추가 C 래퍼 코드를 작성하면 이러한 상호 작용이 용이해지지만 불필요한 복잡성이 발생합니다. 다행스럽게도 Python은 ctypes 모듈을 통해 대체 솔루션을 제공합니다.
ctypes 이해
ctypes는 C 기반 코드 및 라이브러리와 직접 상호 작용할 수 있는 기본 Python 모듈입니다. Python과 DLL 파일 사이의 간격을 원활하게 연결하여 중간 코드 없이도 함수를 호출할 수 있습니다. 이는 미리 정의된 Python 바인딩이 없는 기존 DLL로 작업할 때 특히 유용합니다.
실용적 예
ctypes 사용의 단순성을 설명하기 위해 다음과 관련된 예를 고려해 보겠습니다. EHLLAPI 라이브러리 DLL에서 함수를 호출합니다. 다음 Python 코드는 관련된 주요 단계를 보여줍니다.
<code class="python">import ctypes # Load DLL into memory hllDll = ctypes.WinDLL("c:\PComm\ehlapi32.dll") # Set up function prototype and parameters hllApiProto = ctypes.WINFUNCTYPE( ctypes.c_int, # Return type ctypes.c_void_p, # Parameters 1 ... ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, # ... thru 4 ) hllApiParams = (1, "p1", 0), (1, "p2", 0), (1, "p3", 0), (1, "p4", 0) # Map the DLL call to a Python name hllApi = hllApiProto(("HLLAPI", hllDll), hllApiParams) # Call the DLL function p1 = ctypes.c_int(1) p2 = ctypes.c_char_p(sessionVar) p3 = ctypes.c_int(1) p4 = ctypes.c_int(0) hllApi(ctypes.byref(p1), p2, ctypes.byref(p3), ctypes.byref(p4))</code>
결론
ctypes는 Python 개발자가 추가 코드 작성의 번거로움을 피하면서 DLL 파일을 쉽게 사용할 수 있도록 지원합니다. . 그 다양성으로 인해 C 기반 라이브러리의 다양한 기능을 호출할 수 있어 Python 프로그램 내에서 가능성의 범위가 크게 확장됩니다.
위 내용은 ctypes는 Python과 DLL 파일 간의 격차를 어떻게 해소합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!