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);
jm=env->GetMethodID(env,jc,"printStr","(I)V");
printf("VC call java method.\n");
env->CallObjectMethod(env,obj,jm,x);
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);
修改后编译通过了
但是,最后执行时确出错我反复拭了拭,最后修改了一下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吗
方法名字错了,区分大小写的