java - 获取JNI中的方法地址

标签 java java-native-interface

完成后:

jmethodID mid = (*env)->GetMethodID(env, cls, "run", "()V");

如何获取运行地址,以便将函数指针作为参数传递给 C 函数?也许是一些jmethodID字段?我在 jni 文档中找不到它。谢谢。

最佳答案

您在 C/C++ 中填充的方法将如下所示:

#include "MyTest.h"

JNIEXPORT void JNICALL 
 Java_InstanceMethodCall_nativeMethod(JNIEnv *env, jobject obj)
 {
     jclass cls = (*env)->GetObjectClass(env, obj);
     jmethodID mid = (*env)->GetMethodID(env, cls, "run", "()V");
     (*env)->CallVoidMethod(env, obj, mid);
 }

签名是使用javah生成的。

关于java - 获取JNI中的方法地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11604257/

相关文章:

java - 为什么它甚至可以编译? - 使用 swig 生成的类从 java 编译和运行 native 方法

android - 在 Android 中使用 OpenSSL 的 AES-256 CBC 加密/解密字符串

java - 在一个线程上初始化的jmethodID可以在另一个线程中使用吗?

java - Windows 8.1 上的磁带机目录路径

java - 隐藏字段的 struts 转义表单验证

java - 打印不同大小数组中的元素

java - 从logstash插件发送 "json_event"到JAVA

java - 在 osgi 中使用 ucanaccess 时出错

java - 我正在尝试在 java 中将日期转换为字符串。但我需要在 javascript 中为调用日期编码

java - 使用 JNI 将 C++ 类成员函数绑定(bind)到 Java