在C++本地代码中有如下程序,
其中有个HANDLE hcom,是操作硬件时使用的变量,openReader函数后会放置硬件的句柄,以后就可以通过该变量来操作硬件,
现在,我要将hcom传递回java中去。
不知道这HANDLE hcom算是哪一类型,如果传递回JAVA去。
请高手指点一下!
谢谢!JNIEXPORT jint JNICALL Java_rfid_Reader_openReader(JNIEnv *env, jobject obj,jstring com_port)
{
......
HANDLE hcom;
iBack=OpenReader(&hcom,2,s); //调用该函数后,会设置hcom的值 if(iBack==0)
{
/* int的传递方法
//设置java中的hcom
jclass clazz=env->GetObjectClass(obj);
jfieldID j_hcom=env->GetFieldID(clazz,"vHcom","I");
env->SetIntField(obj,j_hcom,a);
*/
return 0;
}
else
{
return -1;
}
}
其中有个HANDLE hcom,是操作硬件时使用的变量,openReader函数后会放置硬件的句柄,以后就可以通过该变量来操作硬件,
现在,我要将hcom传递回java中去。
不知道这HANDLE hcom算是哪一类型,如果传递回JAVA去。
请高手指点一下!
谢谢!JNIEXPORT jint JNICALL Java_rfid_Reader_openReader(JNIEnv *env, jobject obj,jstring com_port)
{
......
HANDLE hcom;
iBack=OpenReader(&hcom,2,s); //调用该函数后,会设置hcom的值 if(iBack==0)
{
/* int的传递方法
//设置java中的hcom
jclass clazz=env->GetObjectClass(obj);
jfieldID j_hcom=env->GetFieldID(clazz,"vHcom","I");
env->SetIntField(obj,j_hcom,a);
*/
return 0;
}
else
{
return -1;
}
}
将程序改为如下(HANDLE hcom定义到函数外),编译可以通过!
但是在JAVA端调用时却出错了。HANDLE hcom;
JNIEXPORT jint JNICALL Java_rfid_Reader_openReader(JNIEnv *env, jobject obj,jstring com_port)
{
...... iBack=OpenReader(&hcom,2,s); //调用该函数后,会设置hcom的值 if(iBack==0)
{
/* int的传递方法
//设置java中的hcom
jclass clazz=env->GetObjectClass(obj);
jfieldID j_hcom=env->GetFieldID(clazz,"vHcom","I");
env->SetIntField(obj,j_hcom,a);
*/
return 0;
}
else
{
return -1;
}
}