android - JNI : Passing multiple parameters in the function signature for GetMethodID

标签 android java-native-interface

我正在尝试在 Java(来自 C)中执行具有以下签名的函数:

public void execute(int x, int y, int action);

我的问题是在GetMethodID中定义函数签名:

env->GetMethodID(hostClass, "execute", "(I;I;I;)V");

我遇到的问题是:

W/dalvikvm( 1849): Bogus method descriptor: (I;I;I;)V
W/dalvikvm( 1849): Bogus method descriptor: (I;I;I;)V
D/dalvikvm( 1849): GetMethodID: method not found: Lcom/device/client/HostConnection;.execute:(I;I;I;)V

我不确定如何在 GetMethodID 中指定方法签名(3 个整数作为参数)。我看到人们使用“;”在其他帖子中为 String 和 File 类分隔参数,但没有像整数这样的原语。

请问正确的方法是什么?

谢谢。

最佳答案

据此file你应该使用 (III)V 签名。仅当您需要指定时 完全限定的类,你应该使用';',例如 Ljava/lang/String;.

关于android - JNI : Passing multiple parameters in the function signature for GetMethodID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940484/

相关文章:

java - NullPointerException 关于去另一个 Activity ,android studio

Android Wear 5.1 手腕手势 API?

android - 将自定义cookie设置为ffmpeg http请求

java - Android 在内部与外部导入库的好处

android - 如何在 Android Studio 中更改左括号和右括号/大括号的突出显示颜色

java - Delphi 中通过 Java Bridge 使用 DocumentBuilderFactory 时出现段错误

java - 如何定义泛型类的 JNI 方法签名?

java - 在另一个 JNI 函数中使用时 Oop 被破坏

java - 通过 JNI 从 pthread 回调失败

android - Crashlytics 插件未出现 Intellij IDEA 14(NullPointerException : update failed for AnAction with ID=Actions. Crashlytics.CrashlyticsAction)