弱弱地一问,JNI中 --GetMethodID如何调用有多个参数的接口?
本人是一位小C程序员,最近工作需要,要调在c中用一些java程序(linux),使用JNI(网上查到的)调用
比如:java某一个类中有一个函数:
public void put(short c, int address){
p[address]=(char) c;
}
那么,我在c程序中应如何调用?
我是这么调用的:
JNIEXPORT void JNICALL Java_JniTest_getLicence(JNIEnv *pEnv,
jobject test,
jobject obj)
{
........
jmethodID mid = NULL;
jclass cls = (*pEnv)->GetObjectClass(pEnv, obj);
mid =(*pEnv)->GetMethodID(pEnv, cls,"put","(S,I)V");
(*pEnv)->CallVoidMethod(pEnv, obj,mid,(jshort)MemoBuffer[j],j);
}
程序报错,但是如果是调用一个参数的接口是没问题的:
jmethodID mid = NULL;
jclass cls = (*pEnv)->GetObjectClass(pEnv,obj);
mid = (*pEnv)->GetMethodID(pEnv,cls,"setId","(J)V");
(*pEnv)->CallVoidMethod(pEnv,obj,mid,(jlong)m_IDNum);
return m_IDNum;
java接口是别的组开发的,不能修改,我知道这个问题对于各位java的大侠们说应该很菜,可实在是不懂java,惭愧!!
顺便问问,如果接口函数中参数是一个类的话,我该怎么调用,如果是好几个呢?
(分数不多了!!)