gpt4 book ai didi

java - JNI GetDirectBufferAddress 与 ByteBuffer.array()

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:21 27 4
gpt4 key购买 nike

<分区>

我必须将 C++ 代码与 Java 混合使用。java 部分分配一个 java.nio.ByteBuffer,c++ 部分通过 env->GetDirectBufferAddress(buffer) 获取它的地址作为 jbyte* 并填充数据。

字节顺序没问题。可以通过 buffer.get() .getLong() 等在 java 中检索数据。

但是,方法 buffer.array() 失败并且 hasArray() 返回 false。如果我使用 buffer.allocate(size) 而不是 .allocateDirect(size) 方法 array() 运行良好,但我的 C++ 代码获得 NULL 的 DirectBufferAddress 并失败。

我的问题:我怎样才能最好地将两个世界结合起来,同时最少的数据复制?或者,如何最简单地用原生 C++ 数据填充 Java byte[]?

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