1: //: appendixb:UseObjImpl.cpp 2: //# Tested with VC++ & BC++. Include path must 3: //# be adjusted to find the JNI headers. See 4: //# the makefile for this chapter (in the 5: //# downloadable source code) for an example. 6: #include <jni.h> 7: extern "C" JNIEXPORT void JNICALL 8: Java_UseObjects_changeObject( 9: JNIEnv* env, jobject, jobject obj) { 10: jclass cls = env->GetObjectClass(obj); 11: jfieldID fid = env->GetFieldID( 12: cls, "aValue", "I"); 13: jmethodID mid = env->GetMethodID( 14: cls, "divByTwo", "()V"); 15: int value = env->GetIntField(obj, fid); 16: printf("Native: %d\n", value); 17: env->SetIntField(obj, fid, 6); 18: env->CallVoidMethod(obj, mid); 19: value = env->GetIntField(obj, fid); 20: printf("Native: %d\n", value); 21: } ///:~