我是 JNI 的新手,并且有一个 Java 程序,我想从中调用 C++ 中的方法。我有一个用 Java 实现的 ObjectA。我在 C++ 中像这样收到它的 classID:
jclass cls = env->FindClass("myPackages/ObjectA");
现在我有了Java中给出的方法funcA。funcA 接受 ObjectA 类型的 Object 作为参数并返回一个整数。Java 中的声明如下所示:
public int funcA( ObjectA obj);
现在我想在 C++ 中获取 funcA 的 methodID。问题是,我不知道如何指定方法获取的参数类型。我知道我必须写 L fully-qualified-class ;像字符串一样传递对象,但是当对象不是来自官方 javalibraries 而是我创建的对象时,我该怎么做?我试过这个,但它显然没有用:
jmethodID jfuncA = env->GetMethodID(cls, "funcA", "(Lcls;)I");
我得到的回应是,找不到该方法。那么我必须写什么而不是(Lcls;)?或者这是不可能的?
任何想法都是有用的!