与JNI相比,JNA似乎更容易调用本机代码.在什么情况下你会使用JNI而不是JNA?
使用JNI我们可以将自定义数据类型从Java传递到C(反之亦然)吗?我看到原始数据类型到C中的类型的映射,但是我们不能确定是否可以发送我们自己的数据类型(例如发送或返回一个Employee对象或其他东西!).
我想将java类对象传递给JNI方法,我想在JNI方法中调用几个方法,如下所示.
有没有人有像下面这样的例子?
class JavaClassParameter{
void javaMethodTobeCalledInJNI(){
...java source...
}
}
class MainJavaClass{
void somemethod(){
JavaClassParameter object = new JavaClassParameter();
JNIMethod(object);
}
native void JNIMethod(JavaClassParameter object);
}
// C++ code
void JNIMethod(object){
object->javaMethodTobeCalledInJNI();
}
Run Code Online (Sandbox Code Playgroud)