按照JNI的规范再写一个dll,通过这个dll调用你现在的这个dll。

解决方案 »

  1.   

    具体来说就是写好你的java文件,用javah 生成c++头文件,按照这个头文件写好你的cpp文件,可以在这个文件中调用你的dll。
      

  2.   

    you can get it in thinking in java class MyJavaClass {
      public int aValue;
      public void divByTwo() { aValue /= 2; }
    }public class UseObjects {
      private native void 
        changeObject(MyJavaClass obj);
      static {
        System.loadLibrary("UseObjImpl");
      }
      public static void main(String[] args) {
        UseObjects app = new UseObjects();
        MyJavaClass anObj = new MyJavaClass();
        anObj.aValue = 2;
        app.changeObject(anObj);
        System.out.println("Java: " + anObj.aValue);
      }
    }#include <jni.h>
    extern "C" JNIEXPORT void JNICALL
    Java_UseObjects_changeObject(
    JNIEnv* env, jobject, jobject obj) {
      jclass cls = env->GetObjectClass(obj);
      jfieldID fid = env->GetFieldID(
        cls, "aValue", "I");
      jmethodID mid = env->GetMethodID(
        cls, "divByTwo", "()V");
      int value = env->GetIntField(obj, fid);
      printf("Native: %d\n", value);
      env->SetIntField(obj, fid, 6);
      env->CallVoidMethod(obj, mid);
      value = env->GetIntField(obj, fid);
      printf("Native: %d\n", value);
    }
      

  3.   

    http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/java-onlinecourse-bytitle/BE3EC6A2DECACFE248256BE6000DAFBD?OpenDocument
    可以参考,应该可以实现的。就是要注意如果你的类有包名,就要在头文件中方法名字中也加上包名;
      

  4.   

    我解决了!!!!!!!!!!!!
    参考解决方法:
    不要使用Javah命令行生成.h文件,而是使用JBuilder来生成(具体在哪个地方,因为我现在没有JBuilder我不好说,你嫌自己找一下吧)。