Nic*_*ole 12 java-native-interface
这可能是一个愚蠢的问题,揭示了对JNI缺乏了解.我正在编写一个封装Java VM的C++程序:我使用CallVoidMethod之类的调用来调用VM中的函数.这纯粹是背景,与问题无关.
我希望能够在给定jclass实例的情况下找到Java类的名称.有没有办法做到这一点?我可以像在Java程序中一样调用GetName函数吗?
tec*_*age 12
该jclass实例是您将在其上调用方法的对象; 您需要getName在Class类上查找方法ID ,然后jclass使用CallObjectMethod获取jstring结果在实例上调用它.
所以简而言之,你只需调用getName函数并查看jstring结果.
编辑
(错误处理省略)
JNIEnv* env = ...;
// substitute your desired class's specifier for "java/lang/Class"...
jclass cls = env->FindClass("java/lang/Class");
jmethodID mid_getName = env->GetMethodID(cls, "getName", "()Ljava/lang/String;");
jstring name = env->CallObjectMethod(cls, mid_getName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12707 次 |
| 最近记录: |