Arrays JNI

2 respostas
I

Pessoal, tenho o seguinte método:
JNIEXPORT jshort JNICALL Java_TesteDll_P1602_1GetDriverVersion (JNIEnv *env, jobject obj, jshortArray jwVxdVersion){

jshort drivVersion;
jshort ans = P1602_GetDriverVersion(&drivVersion);

jsize len = (*env)->GetArrayLength(env,jwVxdVersion);
jshort *body = (*env)->GetShortArrayElements(env,jwVxdVersion , 0);

body[0]=drivVersion;
(*env)->ReleaseShortArrayElements(env,jwVxdVersion , body, 0);

return ans;

}

o devC++ gera a seguinte mensagem de erro para as linha em que eu uso o operador “env”:
" base operand of ->' has non-pointer typeJNIEnv_’ "

2 Respostas

T

Se você teve a curiosidade de olhar dentro de JNI.H:

#ifdef <em><em>cplusplus

typedef JNIEnv</em> JNIEnv;

<a class="hashtag" href="https://www.guj.com.br/tags/else">#else</a>

typedef const struct JNINativeInterface</em> *JNIEnv;

#endif

e outras coisas mais.

ou seja, existe um monte de coisas que são definidas diferentemente em C e C++.

Resumindo: se você estiver usando C++, em vez de você usar “(*env)->”, você tem de usar “env->” . É apenas “syntatic sugar” mas pode confundir você.

I

po bixo valeu…eu tava meio desesperado e nem olhei direito neste arquivo…ae qd tava tentando apagar o forum tu colocaste a msg…valeus []ss

Criado 9 de maio de 2005
Ultima resposta 9 de mai. de 2005
Respostas 2
Participantes 2