Ctypes를 사용하여 DLL과 Python의 인터페이스를 쉽게 만듭니다.
Python 내에서 DLL의 기능을 활용하는 것은 어려운 작업이 될 수 있습니다. 이 기사에서는 외부 C 래퍼 코드의 필요성을 없애는 간단한 방법인 ctypes를 살펴봅니다.
ctypes는 사용 편의성의 전형입니다. C 유형 데이터 구조 및 함수 프로토타입과 기본적으로 상호 작용할 수 있는 우아한 인터페이스를 제공합니다. 다음 코드 조각을 고려하세요.
<code class="python">import ctypes # Load the DLL into memory hllDll = ctypes.WinDLL("c:\PComm\ehlapi32.dll") # Define the function prototype and parameters hllApiProto = ctypes.WINFUNCTYPE( ctypes.c_int, # Return type ctypes.c_void_p, # Parameter 1 ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p) # ... hllApiParams = ( (1, "p1", 0), (1, "p2", 0), (1, "p3", 0), (1, "p4", 0)) # Create a Python-callable function hllApi = hllApiProto(("HLLAPI", hllDll), hllApiParams) # Call the DLL function with variables 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는 다양한 C 데이터 유형(예: int, char, short, void*)을 지원하고 값별 전달 또는 참조별 전달을 허용합니다. 그 다양성은 특정 데이터 유형을 반환하는 데까지 확장됩니다.
ctype을 활용하는 것은 IBM의 EHLLAPI와 같은 일관된 인터페이스로 DLL을 처리할 때 특히 유용합니다. 이러한 경우 단일 ctypes 함수로 DLL의 모든 기능을 처리할 수 있습니다. 그러나 다양한 함수 시그니처를 가진 라이브러리에서는 각 함수에 대해 고유한 ctypes 함수 구성이 필요합니다.
위 내용은 ctypes를 사용하여 Python과 DLL을 쉽게 인터페이스할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!