我有一个包含以下内容的dll文件
以下功能:
unsigned char * EncodingData(short Data[], int Length);
我想调用这个本地方法
在Java中。所以我创造了一个
包装器dll,其中包含与
以上功能
JNIEXPORT jcharArray JNICALL Java_com_common_FilterWrapper_EncodingData (JNIEnv * env, jclass cls, jshortArray shortData, jint len)
现在我打电话给上面的JNI
从Java函数,它是
呼叫成功。
问题:
我想从包装dll的函数中调用dll文件的函数,但是我不知道如何转换以下内容:
jshortArray到short [](将数据传递到期望short []而不是jshortArray的dll文件的函数中)
将unsigned char传递给jcharArray(将值返回给java函数)
注意:包装dll是用VC ++编写的
最佳答案
unsigned short tempElem;
jshort* test = env->GetShortArrayElements(shortData, NULL);
int size = (sizeof(test) / sizeof(*test)) - 1;
for (int i = 0; i < size; i++) {
tempElem = (unsigned short)test[i]);
printf("[%d] test %u || size = %d\n", i, tempElem, size);
}
关于java - JNI-如何将jshortArray转换为short *,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5586155/