java - 如何从共享库调用函数

标签 java c++ c linux java-native-interface

我的系统(Java + Linux)中加载了一个共享库。

System.loadLibrary("mylib");

我想从 mylib 调用 java 函数,例如:

JNIEXPORT void JNICALL Java_absoluta_web_AW_10001_Funcao3(JNIEnv *env, jobject obj) {
    javaFUnction();
printf("Here...\n");
    return;
}

可能吗?

最佳答案

你会使用

env->CallVoidMethod(obj, methodID)

在哪里获取 methodID,例如

jmethodID = env->GetMethodID(classID, "javaFuntion", 签名)

其中 classID 是类的 id,signature 是函数的签名。您可以使用 javap 获取签名。所有这些都有据可查。您应该能够从那里获取它。

关于java - 如何从共享库调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15491369/

相关文章:

c - 传递给共享对象函数的参数

c - 打开 ("/tmp", O_RDWR | O_TMPFILE, 0) 失败,权限被拒绝

java - 将计时器添加到我的程序 (javafx)

c++ - 错过了虚函数调用

java - 如何在Java中创建一个包含带引号的字符串的字符串?

c++ - 错误 : no match for 'operator>>' (operand types are 'QDataStream' and 'Unit*' )

c++ - 数组的大小

c - fopen 在尝试打开 bmp 文件(C++)时返回 NULL?

java - 如果()不工作

java - 代码未显示正确的输出