JNI:在GetMethodID的函数签名中传递多个参数

时间:2011-10-29 17:28:02

标签: 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类分隔其他帖子中的参数,但没有像整数这样的原语。

请问这样做的正确方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:54)

根据此file,您应该使用(III)V签名。仅在您需要指定时 完全合格的班级你应该使用';',如Ljava/lang/String;