我正在研究的是使用C ++从相机读取图像数据并使用JNI让Java读取这些图像数据,我正在使用Mac OSX。
我目前拥有的拦截器是,我还没有找到任何方法在Mac OSX上的两种语言之间创建共享内存。
我可以想象我会使用一些缓冲区这样做,是否有人能对这个问题提供一些提示和知识?
提前谢谢!
答案 0 :(得分:2)
您可以使用ByteBuffer.allocateDirect
创建本机可访问内存:
public static native void getCameraData(ByteBuffer bb);
...
ByteBuffer bb = ByteBuffer.allocateDirect(1024);
getCameraData(bb);
// use data
然后在C ++端,使用GetDirectBufferAddress
来访问内存块:
JNIEXPORT void JNICALL Java_MyClass_getCameraData(JNIEnv *env, jclass, jobject bb) {
void* data = env->GetDirectBufferAddress(bb);
}