我是新来JNI,并给予一个Java程序,从中我想打电话给使用C++的方法。 我有一个用Java实现的ObjectA。我收到它在C++中的classID:JNI:调用C++中的Java方法与对象作为参数
jclass cls = env->FindClass("myPackages/ObjectA");
现在我有Java中给出的方法funcA。 funcA接受ObjectA类型的Object作为参数并返回一个整数。 Java中的声明如下所示:
public int funcA(ObjectA obj);
现在我想要获取C++中funcA的methodID。问题是,我不知道如何指定该方法获得的参数类型。我知道我必须写L完全合格的课;传递像String这样的对象,但是如果对象不是来自官方javalibraries,而是我创建的对象,我该如何做到这一点? 我想这一点,但它显然没有奏效:
jmethodID jfuncA = env->GetMethodID(cls, "funcA", "(Lcls;)I");
我的一切作为回应是,该法没有被发现。那么我需要写什么来代替(Lcls)?或者这是不可能的?
任何想法都很有用!
这根本不是C++编程语言的工作原理。 'cls'是你的代码中的一个变量。你不能在字符串里使用它!你为什么不直接写'myPackages/ObjectA'呢?然后它会工作。 –