如何将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代码的“端口”。