我对Java比较陌生,因此对JNI和C ++来说是一个新手。是否可以通过多个类访问相同的动态库?例如,如果在我的C ++中,我有一个类,而这个类又有两个子类,我是否可以从两个Java类访问子类?
例如,在foo.h中:
class Controller {
public:
class A {
public:
int someMethod();
}
class B {
public:
int someOtherMethod();
}
}
并在A.java中:
class A {
static {
System.loadLibrary("foo");
}
public native int someMethod();
}
与B.java:
class B {
static {
System.loadLibrary("foo");
}
public native int someOtherMethod();
}
这可能吗?如果是的话,我该怎么做呢?
答案 0 :(得分:0)
类?是。实例?是(但是由你来共享它们,如果你使用多个线程,并假设它们不是可重入的,你需要同步访问权限。)
答案 1 :(得分:0)
在C ++中,您正在从DLL访问函数而不是类的实例。
您可以从类内部方法或独立函数中调用外部函数,无论它们是驻留在DLL,共享库还是其他翻译单元中。
所以,是的,您可以访问其他类的方法,前提是它们具有公共可访问性,并且在使用方法之前声明(原型)可用。