当前位置: 首页 > 面试题库 >

如何在Java中获取新的Pointer?

归翔
2023-03-14
问题内容

如何从JNA用C调用具有此方法签名的方法?

int open_device(context *ctx, device **dev, int index);

C方法的最后两行如下所示:

*dev = pdev;
return 0;

那是该dev方法的唯一用途。这意味着我必须将poiner传递给该方法的空指针,对吗?然后,该方法用device对象的地址填充空指针,然后我可以将指向设备的指针传递给其他方法。

我的问题是:这是正确的方法吗?如果是,如何从Java分配新的指针?

根据公认的答案,我这样做:

Memory p = new Memory(Pointer.SIZE);
Memory p2 = new Memory(Pointer.SIZE);
p.setPointer(0, p2);
nativeLib.open_device(ctx, p, index);
return p2;

问题答案:

看来,JNA Pointer类具有允许多个间接访问的setPointergetPointer方法,并且Memory该类实际上是在“分配”本机对象。因此,您应该能够执行以下操作:(我只是从JNA文档中猜测,我还没有对此进行测试)

Pointer pDev = new Memory(Pointer.SIZE); // allocate space to hold a pointer value
// pass pDev to open_device
Pointer dev = pDev.getPointer(0);        // retrieve pointer stored at pDev


 类似资料:
  • 问题内容: 不使用任何外部库,将网站的HTML内容提取为String的最简单方法是什么? 问题答案: 我目前正在使用此: 但不确定是否有更好的方法。

  • 问题内容: 我试图在另一个问题中从Spark库调用。并且,它要求两个参数,一个文字对象,它的类型(A )。 第一个论点,我可以提出自己(我认为)。但是对于第二个对象,我不知道如何为它实例化一个对象。我正在尝试通过作为第二个参数。 有人可以告诉我如何在 Java中* 创建for 吗?这是我要完成的代码: * 问题答案: 在另一个问题中,我说 并从Java提供CanBuildFrom自变量在技术上是可

  • 问题内容: 我正在尝试从ArrayList中获取值。这是我的代码示例: 修订版感谢所有答案,我可能应该在代码中添加更多内容。在Car类中,我有另一种方法来计算包括税金在内的总费用。 在主要班级 再次感谢 问题答案: 假设您的课程有价格的吸气剂方法,则可以简单地使用 元素的索引在哪里。 您也可以使用 如果需要存储,还需要从函数中返回 主要 并更改您的功能类型

  • 问题内容: 在Objective-C中,我用于获取父URL。在Java中这相当于什么? 问题答案: 我能想到的最短的代码段是这样的:

  • 我编写了一个servlet过滤器,在其中我试图获得自定义header=samlRequest的值,从rest客户机/Postman chrome插件中我获得了samlRequest的值,但是使用ajax调用我提供了samlRequest键及其值,但是在java中,我在“access-control-request-headers”中获得了唯一的键samlRequest,如何获得samlReques

  • 在Objective-C中,我使用获取父URL。这在Java中的等价物是什么?