다음은 시나리오입니다. ctypes를 사용하여 C DLL을 Python 프로그램에로드하고 있습니다. DLL의 코드가 파이썬에서 함수를 호출 할 수 있도록 콜백을 등록하려고합니다.DLL이이 함수를 콜백으로 호출 할 수 있도록 ctypes를 사용하여 가변 파이썬 함수의 프로토 타입을 만들 수 있습니까?
이 기능을 가변적으로 설정하기 전까지는이 모든 것이 훌륭합니다. 예를 들어, 내가 파이썬 "의 printf"을 구현하고 싶었 말 (인수를 위해서, 나는 또한 정수를 반환해야합니다) :
def printf(format, *args):
(...)
return 0
내가하는 ctypes에 CFUNCTYPE 공장을 사용하여 콜백 함수 포인터를 만드는 오전를 :
callback_type = CFUNCTYPE(c_int, c_wchar_p)
물론
, 나는 단지 하나 개의 입력 인수 (유니 코드 문자 배열과 형식 문자열)를 지정하기 때문에, 콜백 작동하지만 *args
가 비어 있습니다.
그래서 ctypes로이 작업을 수행 할 수있는 방법이 있습니까? 아니면 variadic 콜백 함수가 필요하지 않도록 C 코드를 다시 작성해야합니까?
CFFI에 대한 팁 주셔서 감사합니다! –
CFFI의 설명서를 편집하여 C로 작성된 사용자 정의 콜백 예제를 가지며 파이썬을 다시 호출합니다. –