我必须缺少一些东西。给定一个实现了com.sun.jna.Callback
的类的实例,我如何获得函数指针地址为Pointer
,以便我可以将它传递给一个函数,该函数需要void*
参数(我正在使用Pointer
)。在JNA中将回拨变为指针
具体来说,我想创建一个CFNumber
使用CFNumberCreate(Pointer, int, Pointer)
与函数的地址,以便我可以调用SetSpeechProperty
注册一个SpeechDoneProcPtr
(又名NSNumber*
)。
谢谢。尽管它起初感觉很奇怪,但另一个带有Callback参数的'CFNumberRef'构造函数仍然可以正常工作:'public CFNumberRef CFNumberCreate(Pointer alloc,int theType,Callback valuePtr);' – yonran
其实我只是意识到我需要创建一个指针到函数指针](http://stackoverflow.com/a/17685620/471341)。我不能使用'CallbackReference',因为它不是公共类。你知道一种公开的方式来将回调转换为指针吗? – yonran
哦,这是一个疏忽。不过,您可以通过创建带有单个“回调”字段的“结构”来有效地创建“CallbackByReference”。相同的内存布局。 – technomage