Name: ddT132432 Date: 09/26/2001
java version "1.3.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_01)
Java HotSpot(TM) Client VM (build 1.3.1_01, mixed mode)
Glue.java
=========
import java.io .*;
public class Glue
{
static int si;
static
{
// load Glue.dll containing Glue.nativeWidthInBits
//Given absolute path since, it is not picking up the .dll if i give only "Glue"
System.load("c:/java/jdk1.3.1/include/win32/Glue/debug/Glue.dll");
}
Glue(){
System.out.println("Java Class Initialized...");
}
public static native int widthInBits(int n);
public void testMethod(){
System.out.println("In side testMethod....");
}
public static void main(String args[]){
Glue g=new Glue();
si=101;
System.out.println("inside java ,si ="+si);
int r=g.widthInBits(10);
System.out.println("inside java ,result is ;"+r);
}
}
Glue.c
======
#include "Glue.h"
static jclass cls = 0;
static jmethodID mid =0;
static jfieldID fid=0;
jint si;
JNIEXPORT jint JNICALL Java_Glue_widthInBits (JNIEnv *env, jobject obj, jint n)
{
jclass cls1 = (*env)->GetObjectClass(env, obj);
if(cls1 ==0 ){
printf("In Side C, cls is 0 ....");
}
fid = (*env)->GetStaticFieldID(env, cls, "si", "I");
si = (*env)->GetStaticIntField(env, cls, fid);
printf("In Side C si is....%d\n",si);
mid = (*env)->GetMethodID(env, cls, "testMethod", "()V");
if (mid == 0) {
(*env)->DeleteLocalRef(env, cls);
printf("In Side C, mid is 0 ....");
return 0;
}
(*env)->CallVoidMethod(env,obj,mid);
printf("In Side C ....");
return n*2;
}
(Review ID: 132650)
======================================================================