我编写了一个共享库,可以通过我的linux系统和java的JNI调用来访问。
该库应该有一个全局的ringbuffer,它必须在JNI方法和其他本机方法中可用。
我认为这不会是一个问题,因为当我从不同的程序访问SL时,全局变量总是如此。
但是现在,在我的JNI方法中,全局变量似乎没有初始化(它们应该在程序流强制它时)。
以下是我的例子:
ringbuf_t ringbuffer;
void internalMethod() {
// this method is first called from system-program
ringbuffer = ringbuf_new(5000);
}
JNIEXPORT jint JNICALL Java_example_read(JNIEnv *env, jobject This) {
// this method is later called via JNI
if (!ringbuffer) {
LOGI("uhhh, why is that buffer not set?!");
}
}
我需要做些什么来使ringbuffer-variable真正全局化,以便每个实例/对共享库的调用都访问该变量的同一个实例?
答案 0 :(得分:0)
从评论中看来,你似乎想在一个过程中分配你的记忆并在另一个过程中使用它。
为此目的,查看共享内存可能是一个好主意:'man shmget'应该是一个好的开始。
请注意,这与JNI没有特别关系,并且是对操作系统的限制。
编辑: 我建议你: