&을로드하는 방법을 설명하는 샘플을 제공해주십시오. Python을 사용하여 C++ DLL의 함수를 호출합니까?파이썬에서 ctypes를 사용하여 DLL을로드하는 방법은 무엇입니까?
"ctypes"를 사용하여 Python을 사용하여 DLL에서 함수를로드하고 호출 할 수 있다고 말하는 기사가 있습니다. 하지만 작동 샘플을 찾을 수 없습니까?
아무에게도 나에게 어떻게 샘플을 제공하면 좋을 것입니다.
&을로드하는 방법을 설명하는 샘플을 제공해주십시오. Python을 사용하여 C++ DLL의 함수를 호출합니까?파이썬에서 ctypes를 사용하여 DLL을로드하는 방법은 무엇입니까?
"ctypes"를 사용하여 Python을 사용하여 DLL에서 함수를로드하고 호출 할 수 있다고 말하는 기사가 있습니다. 하지만 작동 샘플을 찾을 수 없습니까?
아무에게도 나에게 어떻게 샘플을 제공하면 좋을 것입니다.
여기는 입니다. 나는 DLL을로드하고, 함수를 검색하고, 그 함수를 설정하고 호출하는 프로젝트에서 사용했습니다. 코드는 입니다.
import ctypes
# Load DLL into memory.
hllDll = ctypes.WinDLL ("c:\\PComm\\ehlapi32.dll")
# Set up prototype and parameters for the desired function call
# in the DLL, `HLLAPI()` (the high-level language API). This
# particular function returns an `int` and takes four `void *`
# arguments.
hllApiProto = ctypes.WINFUNCTYPE (
ctypes.c_int,
ctypes.c_void_p,
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)
# Actually map the DLL function to a Python name `hllApi`.
hllApi = hllApiProto (("HLLAPI", hllDll), hllApiParams)
# This is how you can actually call the DLL function. Set up the
# variables to pass in, then call the Python name with them.
p1 = ctypes.c_int (1)
p2 = ctypes.c_char_p ("Z")
p3 = ctypes.c_int (1)
p4 = ctypes.c_int (0)
hllApi (ctypes.byref (p1), p2, ctypes.byref (p3), ctypes.byref (p4))
이 경우 함수는 터미널 에뮬레이터 패키지에 하나 그것은 아주 간단한 하나 - 그것은 네 개의 매개 변수를 가져다가 값을 (일부는 실제로는 포인터 변수를 통해 반환) 반환하지 않습니다. 첫 번째 매개 변수 (1)는 호스트에 연결하려는 것을 나타냅니다.
두 번째 매개 변수 ("Z")는 세션 ID입니다. 이 특정 터미널 에뮬레이터는 "A"에서 "Z"까지 짧은 이름의 세션을 허용했습니다.
다른 두 매개 변수는 단순히 길이와 다른 바이트를 사용하여 그 순간에 나를 도망칩니다 (나는 코드를 조금 더 잘 문서화해야했습니다).
단계는에 있었다.
하는 ctypes 라이브러리는 모든 C 데이터 유형 (등등 int
, char
, short
, void*
등)이 있고, 어느 하나의 값 또는 매개 변수를 참조로 전달할 수있다. 자습서는 here입니다.