当前位置: 技术问答>java相关
我想用JNI传递一个类,遇到了麻烦。
来源: 互联网 发布时间:2015-07-21
本文导语: 我想用JNI传递一个类,遇到了麻烦。 Java side public class compiler { pubic myfunc func=new myfunc(); class myfunc{ int m_iParamNum; } static { System.loadLibrary("compiler"); } static public native Cfunction SE_Ge...
我想用JNI传递一个类,遇到了麻烦。
Java side
public class compiler {
pubic myfunc func=new myfunc();
class myfunc{
int m_iParamNum;
}
static {
System.loadLibrary("compiler");
}
static public native Cfunction SE_GetPFunctionTable();
public compiler() {
}
}
C side
JNIEXPORT jobject JNICALL Java_compiler_SE_1GetPFunctionTable (JNIEnv *, jclass);
{
static jfieldID funcTableID=NULL;
jobject resu;
jclass cls = env->GetObjectClass(obj);
funcTableID=env->GetFieldID(cls, "func", "java/lang/Object");
//这一行funcTableID总是只能得到NULL,是什么原因?谢谢
resu=env->GetObjectField(obj,funcTableID);
static jfieldID lineID=NULL;
jclass cfunctbl=env->GetObjectClass(resu);
lineID=env->GetFieldID(cfunctbl,"m_iParamNum","I");
jint setline=100;
env->SetIntField(obj,lineID,setline);
return resu;
}
Java side
public class compiler {
pubic myfunc func=new myfunc();
class myfunc{
int m_iParamNum;
}
static {
System.loadLibrary("compiler");
}
static public native Cfunction SE_GetPFunctionTable();
public compiler() {
}
}
C side
JNIEXPORT jobject JNICALL Java_compiler_SE_1GetPFunctionTable (JNIEnv *, jclass);
{
static jfieldID funcTableID=NULL;
jobject resu;
jclass cls = env->GetObjectClass(obj);
funcTableID=env->GetFieldID(cls, "func", "java/lang/Object");
//这一行funcTableID总是只能得到NULL,是什么原因?谢谢
resu=env->GetObjectField(obj,funcTableID);
static jfieldID lineID=NULL;
jclass cfunctbl=env->GetObjectClass(resu);
lineID=env->GetFieldID(cfunctbl,"m_iParamNum","I");
jint setline=100;
env->SetIntField(obj,lineID,setline);
return resu;
}
|
你本来的Java端也没有func这个field啊