1.结构体的使用
struct Work{
char name[10];
int age;
}darren = {"Darren",23},jack;//默认给结构体赋值
struct Worker{
char name[10];
int age;
struct Work work;
};
extern "C" JNIEXPORT void JNICALL
Java_com_xinrui_ndkapp_MainActivity_usestruct(JNIEnv *env, jobject instance){
struct Work work;
work.age=24;
strcpy(work.name,"eo");
struct Work works={"muchunxia",24};
LOGE("name=%s,age=%d,jack.name=%s,jack.age=%d,%s,%d",darren.name,darren.age,jack.name,jack.age,works.name,works.age);
struct Worker worker;
worker.age=56;
strcpy(worker.name,"hhoooe");
worker.work.age=90;
strcpy(worker.work.name,"ooeoooo");
struct Worker workers={"yanseror",34,{"lili",26}};
LOGE("name=%s,age=%d,work.name=%s,work.age=%d,%s,%d",worker.name,worker.age,worker.work.name,worker.work.age,workers.work.name,workers.work.age);
Work* work_one = (Work*)malloc(sizeof(5)*10);
work_one->age=100;
strcpy(work_one->name,"liiiiii");
work_one+=4;
work_one->age=109;
strcpy(work_one->name,"liiiiii9");
LOGE("name=%s,age=%d",work_one->name,work_one->age);
free(work_one);
Work* work_s[3];//初始化数组指针
for(int i=0;i<3;i++){
Work work={"jsjf",34+i};
work_s[i]=&work;
LOGE("name=%s,age=%d",work_s[i]->name,work_s[i]->age);
}
}
2.调用Java类的方法和属性(结构体赋值)
extern "C" JNIEXPORT void JNICALL
Java_com_xinrui_ndkapp_MainActivity_setAttr(JNIEnv *env, jobject instance,jobject o){
jclass cla = env->FindClass("com/xinrui/ndkapp/entity/MediaInfo");
//方法赋值
jmethodID jmethodID1 = env->GetMethodID(cla,"setWidth","(I)V");
jmethodID jmethodID2 = env->GetMethodID(cla,"setStr","(Ljava/lang/String;)V");
jmethodID jmethodID3 = env->GetMethodID(cla,"setHeight","(I)V");
jstring str=env->NewStringUTF("oooowwe");
env->CallVoidMethod(o,jmethodID1,24);
env->CallVoidMethod(o,jmethodID2,str);
env->CallVoidMethod(o,jmethodID3,45);
env->DeleteLocalRef(str);
//属性赋值
jfieldID jfieldID1 = env->GetFieldID(cla,"width","I");
jfieldID jfieldID2 = env->GetFieldID(cla,"height","I");
jfieldID jfieldID3 = env->GetFieldID(cla,"str","Ljava/lang/String;");
env->SetIntField(o,jfieldID1,52);
env->SetIntField(o,jfieldID2,68);
env->SetObjectField(o,jfieldID3,env->NewStringUTF("muchuxia"));
}
MediaInfo 类
package com.xinrui.ndkapp.entity;
public class MediaInfo {
public int width;
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public int height;
public String str;
}