我编写了一个共享库,可以通过我的 linux 系统和来自 java 的 JNI 调用访问它。
该库应该有一个全局环形缓冲区,它必须在 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 变量真正成为全局变量,以便每个实例/对共享库的调用都访问该变量的同一个实例?