在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;
}
}

解决方案 »

  1.   

    你将该变量做为全局变量存放起来吧。不要存在JAVA中,存在JNI的全局变量中
      

  2.   

    思路不错!但发现我的程序不能实现。
    将程序改为如下(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; 

    }