gpt4 book ai didi

java - 如何使用 JNA 将 char * aarr= new char[200] 从 C++ 返回到 Java

转载 作者:行者123 更新时间:2023-12-01 15:22:44 25 4
gpt4 key购买 nike

我是 JNA 的新手。在我的一个应用程序中,我需要将 char * aarr= new char[200] 从 c 返回到 java。我不明白该怎么做。我的 C++ 函数的返回类型应该是什么?我应该如何声明我的 java 方法来恢复 char 数组?有没有其他方法像在c++中通过引用传递变量来获取c++的char[]值?

最佳答案

如果您从 native 代码返回缓冲区,则需要使用 Pointer 并使用各种指针数据访问方法来获取/设置数据 (Pointer.getByteArray()) > 和 Pointer.setByteArray(),例如)。请注意,如果数据是由 native 代码分配的,则必须提供某种处理内存的方法,因此您需要在 native 代码中保留指针以供以后处理,或者将其从 Java 传回(作为 指针),以便您的C++可以执行适当的delete[]操作。

如果您可以从Java端分配缓冲区(如果Java端需要广泛操作数据,则推荐),如果数据需要使用直接的ByteBufferMemory是长期存在的,或者是原始字节数组(如果 native 代码仅需要在 native 调用期间访问它)。

JNA 文档清楚地表明 native char 映射到 Java byte

还要记住,Java 仅具有有符号值,因此您需要将 Java byte 值(可能为负)转换为更大的类型(shortint)并屏蔽掉高位,例如

int 数据 = (int)byteValue & 0xFF;

关于java - 如何使用 JNA 将 char * aarr= new char[200] 从 C++ 返回到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651420/

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