传对象:
java jni类中,
public static class hwInfo
{
public String cpuInfo;
public int cpuCount;
}
public hwInfo m_info = new hwInfo();
public native boolean getCpuFre(hwInfo info);
jni实现(注意红色部分obj变量的对应),
JNIEXPORT jboolean JNICALL Java_com_example_hwInfor_cpuInfo_getCpuFre
(JNIEnv *env, jobject obj1, jobject obj)
{
jclass jc = env->FindClass("com/example/hwInfor/cpuInfo$hwInfo");
jfieldID infoid = env->GetFieldID(jc, "cpuInfo", "Ljava/lang/String;");
jfieldID countid = env->GetFieldID(jc, "cpuCount", "I");
jstring jstr = env->NewStringUTF("hello");
env->SetObjectField(obj, infoid, jstr);
env->SetIntField(obj, countid, 10);
return true;
}
java中调用,
String strFre = "init";
if (!(cpu.getCpuFre(cpu.m_info)))
strFre = "cpu fre fail";
else
{
strFre = cpu.m_info.cpuCount + ":" + cpu.m_info.cpuInfo;
}