本帖最后由 uqiang 于 2009-12-13 19:08:52 编辑

解决方案 »

  1.   

    恩, 这个问题我前段时间也在搞, 最后的结论是, 用JAVA中的对象来代替C中的基本数据类型.就拿你的例子来说, 要改变那个形参INT的值, 只能这样:JAVA中的代码:
    native void f0 (Integer a);JNI中的C代码:
    f0 (jobject a)
    {
    //获取INT值
        jclass ji = jEnv->GetObjectClass( a );
        jmethodID mid = jEnv->GetMethodID( ji, "intValue", "()I" );
        int tmpA = jEnv->CallIntMethod( a, mid );    tmpA ++;//设置INT值
        jclass ji = jEnv->GetObjectClass( a );
        jmethodID jIntConstruct = jEnv->GetMethodID( ji, "<init>", "(I)V"); 
        jEnv->CallVoidMethod( a, jIntConstruct, tmpA );
    }