문제

이것은 관련이 있습니다 내 다른 질문, 그러나 나는 새로운 질문으로 그것을 물어봐야 할 것 같은 느낌이 들었습니다.

기본적으로 FLAC는 콜백에 기능 포인터를 사용하고 CTYPES로 콜백을 구현하려면 사용합니다. CFUNCTYPE 프로토 타입으로, 당신은 다음을 사용합니다 prototype() 그것들을 만들 수있는 기능.

내가 이것과 관련된 문제는 콜백 함수를 만들겠다고 생각했다 (재현 한 구조를 보여주지 않고 flac__frame이 구조입니다).

write_callback_prototype = CFUNCTYPE(c_int, c_void_p, 
                                     POINTER(FLAC__Frame), 
                                     POINTER(c_int32), v_void_p)

내가 가진 문제는 구현입니다. flac__frame은 프로그래머에 의해 인스턴스화되지 않으며, 초기화 기능에서만 호출되며 처리 함수는 콜백 기능을 직접 작성해야하지만 문제는 내가 어떻게 그렇게 할 것인지 모르겠다는 것입니다. 내가 어떻게 해야하는지 알고 있다면 도움이 크게 높아질 것입니다.

도움이 되었습니까?

해결책

에 따르면 CTYPES 콜백 문서 파이썬 기능을 정의 할 수 있습니다

def my_callback(a, p, frame, p1, p2)
    pass

그런 다음 다음과 같은 C 호출 기능에 대한 포인터를 만듭니다.

callback = write_callback_prototype(my_callback)

이 기능 포인터는 FLAC로 전달 될 수 있습니다

다른 팁

내가 가진 문제는 구현입니다. flac__frame은 프로그래머에 의해 인스턴스화되지 않으며, 초기화 기능에서만 호출되며 처리 함수는 콜백 기능을 직접 작성해야하지만 문제는 내가 어떻게 그렇게 할 것인지 모르겠다는 것입니다. 내가 어떻게 해야하는지 알고 있다면 도움이 크게 높아질 것입니다.

이 경우 사용 만 사용하십시오.

import ctypes

class FLAC__Frame(ctypes.Structure):
    pass

그리고 그것이 이미 정의 된 척하고, 기본적으로 메모리의 위치 인 포인터 만 필요하기 때문에 신경 쓰지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top