gpt4 book ai didi

java - 如何将 java jna 接口(interface)转换为 kotlin

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:05 26 4
gpt4 key购买 nike

我正在尝试将 openvr binding 移植到 kotlin

我在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)
}

但它提示

unresolved reference: apply

为什么?我该如何解决这个问题?

供引用,C++代码

class IVRSystem
{
public:
virtual void GetRecommendedRenderTargetSize( uint32_t *pnWidth, uint32_t *pnHeight ) = 0;
}

最佳答案

GetRecommendedRenderTargetSize_callback 是一个接口(interface)。

接口(interface)本身没有apply(IntBuffer, IntBuffer)函数,但定义了这样一个函数来实现接口(interface)的实例。

您需要一个实现您的接口(interface)的对象实例,以便能够调用其“apply”函数,但这不是您提供的 Java 代码的“端口”。

关于java - 如何将 java jna 接口(interface)转换为 kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40150252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com