在JAVA开发和Android的JNI开发中有很多小伙伴都是只会在JAVA中调用C/C++中的方法,不知道怎么在C/C++中如何调用JAVA中的方法和属性,当然在JNI中调用JAVA中的方法和属性用得并不多。
在java中实体化类对象,并定义native方法,如果下图:
然后还是在C中把native方法实体,代码码如下:
在这里补充一下,如果不想调用java中父类的方法,而是调用子类的方法可以用CallobjectMethod();的方法,即可。调用父类的方法是CallNonvirtualobjectMethod();即可。
其中GetMethodID();第四个参数为方法的签名,那么怎么查看java中方法的签名呢?我们可以用jdk中的工具查看其签名,其命令为“javap -s -p 全类名”,如下图:
最后在java中调用该native方法就可以了,如下图: