如何将java jna接口转换为kotlin
我正试图移植到kotlin的openvr绑定
我有以下在Java中:
public class IVRSystem extends Structure { /** * C type : GetRecommendedRenderTargetSize_callback* */ public IVRSystem.GetRecommendedRenderTargetSize_callback GetRecommendedRenderTargetSize; public interface GetRecommendedRenderTargetSize_callback extends Callback { void apply(IntBuffer pnWidth, IntBuffer pnHeight); }; }
Intellij将其自动转换为
var GetRecommendedRenderTargetSize: IVRSystem.GetRecommendedRenderTargetSize_callback? = null interface GetRecommendedRenderTargetSize_callback : Callback { fun apply(pnWidth: IntBuffer, pnHeight: IntBuffer) }
我改变它然后:
fun getRecommendedRenderTargetSize(pnWidth: IntBuffer, pnHeight: IntBuffer) = GetRecommendedRenderTargetSize_callback.apply(pnWidth, pnHeight) interface GetRecommendedRenderTargetSize_callback : Callback { fun apply(pnWidth: IntBuffer, pnHeight: IntBuffer) }
但它抱怨
未解决的参考:申请
为什么? 我该如何解决这个问题?
作为参考,C ++代码
class IVRSystem { public: virtual void GetRecommendedRenderTargetSize( uint32_t *pnWidth, uint32_t *pnHeight ) = 0; }
GetRecommendedRenderTargetSize_callback
是一个接口。
接口本身没有apply(IntBuffer, IntBuffer)
函数,但定义了实现接口实例的函数。
你需要一个实现你的接口的对象的实例,以便能够调用它的“apply”函数,但是这不会是你提供的Java代码的“端口”。