jc=env->GetObjectClass(env,obj);
jm=env->GetMethodID(env,jc,"printStr","(I)V");
printf("VC call java method.\n");
env->CallObjectMethod(env,obj,jm,x);

解决方案 »

  1.   

    写错了jc=env->GetObjectClass(obj);
    jm=env->GetMethodID(jc,"printStr","(I)V");
    printf("VC call java method.\n");
    env->CallObjectMethod(obj,jm,x);
    jc=env->GetObjectClass(obj);
    jm=env->GetMethodID(jc,"printStr","(I)V");
    printf("VC call java method.\n");
    env->CallObjectMethod(obj,jm,x);
      
      

  2.   

    谢谢你
    修改后编译通过了
    但是,最后执行时确出错我反复拭了拭,最后修改了一下java程序public class cNative
    {
       public native void testNative(int m);       //声明本地方法   static
       {
         System.loadLibrary("dllNative");
       }
       //装载动态连接库文件,设以后要生成的动态连接库文件名为dllNative.dll   public cNative()
       {
       }   public void printStr(int m)
       {
         String str="";
         for(int i=0;i<m;i++)  str+=i+"  ";
         System.out.println(str);
       }  public static void main(String[] args)
      {
        cNative mynative=new cNative();
        System.out.println("Java call VC method.");
        mynative.testNative(4); //调用VC本地方法
      }
    }其他的还是先前你修改过的dll源程序编译,但是到最后执行的时候,产生了这样的错误,我找补出来那里不对了
    java cNative<enter>
    下面是结果:
    Java call VC method.
    Exception in thread "main" java.lang.UnsatisfiedLinkError:testNative
                        at cNative.testNative<Native Method>
                        at cNative.main<cNative.java:26>这又是那里错了呢?那里有比较详细的正确的jni教程呢可以知道你的e-mail吗
      

  3.   

    JNIEXPORT void JNICALL Java_cNative_testNative(JNIEnv *env,jobject obj,jint m){
    方法名字错了,区分大小写的