我正在实现一个 Java 软件,它有望允许 C 库作为插件。为了调用这些未来函数,我需要以某种方式在 Java 中创建一个本机函数,我可以从中调用尚不存在的代码。方法签名将是静态的,但方法和类名可能会更改。
有没有办法检查加载的库或可用功能?我希望它的工作方式如下:
在我的 Java 类中,我将有一个函数;
public static native void thirdParty(String class, String method, int[] data, int[] params);
它将调用我的 C 库中的函数;
JNIEXPORT void JNICALL Java_com_ex_app_Native_thirdParty(JNIEnv *, jclass, jstring, jstring, jintArray, jintArray);
我可以从中获取类和方法名称,如果它们存在则调用它们,如果它们不存在则抛出异常。
我想我正在寻找的是某种 Java 风格的反射,但在 C 中或在 C++ 中失败。
我怎样才能做到这一点?