我有一个包含以下内容的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/

10-09 06:19
查看更多