뭔가 빠뜨린 것 같습니다. com.sun.jna.Callback
을 구현하는 클래스의 인스턴스에서 함수 포인터 주소를 Pointer
으로 가져와 Pointer
을 사용하는 void*
매개 변수를 사용하는 함수로 전달할 수 있습니다.콜백을 JNA의 포인터로 바꿈
구체적으로, I는 만들려 CFNumber
(일명 NSNumber*
) I는 SpeechDoneProcPtr
를 등록 SetSpeechProperty
를 호출 할 수 있도록 함수의 주소를 사용 CFNumberCreate(Pointer, int, Pointer)
.
감사합니다. 처음에는 이상하게 느껴졌지만 콜백 매개 변수를 취하는 또 다른'CFNumberRef' 생성자는 잘 작동합니다 :'public CFNumberRef CFNumberCreate (포인터 할당, int 타입, 콜백 valuePtr);' – yonran
사실 저는 [ 함수 포인터] (http://stackoverflow.com/a/17685620/471341). 'CallbackReference'는 public 클래스가 아니기 때문에 사용할 수 없습니다. 콜백을 포인터로 변환하는 공개 방법을 알고 있습니까? – yonran
오, 그건 감시입니다. 당신은 효과적으로 하나의'Callback' 필드를 가진'Structure '를 생성함으로써 효과적으로'CallbackByReference'를 만들 수 있습니다. 동일한 메모리 레이아웃. – technomage