JNI:使用对象作为参数在C++中调用Java方法

1 java-native-interface

我是JNI的新手,并且给出了一个Java程序,我想从中调用C++中的方法.我有一个用Java实现的ObjectA.我在C++中收到这样的classID:

jclass cls = env->FindClass("myPackages/ObjectA");
Run Code Online (Sandbox Code Playgroud)

现在我有了Java中给出的方法funcA.funcA接受ObjectA类型的Object作为参数并返回一个整数.Java中的声明如下所示:

public int funcA( ObjectA obj);
Run Code Online (Sandbox Code Playgroud)

现在我想在C++中获取funcA的methodID.问题是,我不知道如何指定方法获得的参数类型.我知道我必须写L完全合格的班级; 传递像String一样的对象,但是当对象不是来自官方javalibraries而是我创建的对象时,我该怎么做呢?我尝试过这个,但显然不起作用:

jmethodID jfuncA = env->GetMethodID(cls, "funcA", "(Lcls;)I");
Run Code Online (Sandbox Code Playgroud)

我得到的所有答案都是找不到方法.那么我需要写什么而不是(Lcls;)?或者这不可能吗?

任何想法都很有用!

use*_*421 5

javap -s在已编译的Java类上运行,并使用它告诉您的本机方法的签名.剪切和粘贴.当你拥有一个永不错误的工具时,不要浪费你的时间试图弄清楚它自己.

  • `javap -s -p`包含私有方法. (3认同)