<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 88, comments - 3, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    用JNI從C傳遞結構體到JAVA

    Posted on 2012-10-12 16:40 Milo的海域 閱讀(3863) 評論(0)  編輯  收藏 所屬分類: JavaLinux
    直接上C的實現
    typedef struct Foo {
        
    int len;
        
    char name[100];
    } Foo_t;

    JNIEXPORT jint JNICALL
    Java_TestJNI_foo(JNIEnv 
    *env, jobject obj, jobject fooObj) {

        Foo_t 
    * bar = malloc(sizeof(Foo_t));
        jclass clazz;
        jfieldID fid;

        
    //init the bar data of C
        strcpy(bar->name, "Yachun Miao");
        bar
    ->len = strlen(bar->name);

        
    // mapping bar of C to foo
        clazz = (*env)->GetObjectClass(env, fooObj);
        
    if (0 == clazz) {
            printf(
    "GetObjectClass returned 0\n");
            
    return (-1);
        }
        fid 
    = (*env)->GetFieldID(env, clazz, "len""I");
        (
    *env)->SetLongField(env, fooObj, fid, bar->len);

        fid 
    = (*env)->GetFieldID(env, clazz, "name""Ljava/lang/String;");
        jstring name 
    = (*env)->NewStringUTF(env, bar->name);
        (
    *env)->SetObjectField(env, fooObj, fid, name);

        free(bar);
        
    return 0;
    }

    對應的Java調用
    public class Foo {
        
    protected int len;
        
    protected String name;
    }


        
    private static native int foo(Foo fooObj);

        
    public static void main(String args[]) {
            System.loadLibrary(
    "mylib");

            Foo foo 
    = new Foo();
            foo(foo);
            System.out.println(foo.name);
            System.out.println(foo.len);

        }

    參考鏈接
    http://www.steveolyo.com/JNI/JNI.html#CSTRCJ
    http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/types.html

    主站蜘蛛池模板: 永久在线免费观看| 国内永久免费crm系统z在线 | 三上悠亚在线观看免费| 亚洲AV无码专区日韩| 一级毛片aa高清免费观看| 亚洲人成影院在线观看 | 岛国精品一区免费视频在线观看| 亚洲性日韩精品一区二区三区| 国产精品高清免费网站| 亚洲V无码一区二区三区四区观看| 国产成人久久AV免费| 亚洲最新视频在线观看| 人妻视频一区二区三区免费| 亚洲日韩国产AV无码无码精品| 永久久久免费浮力影院| 一区二区三区免费高清视频| 亚洲人成网亚洲欧洲无码久久| 久久国产免费一区二区三区| 亚洲国产成人va在线观看网址| 午夜dj在线观看免费视频| 亚洲AV成人精品日韩一区| 亚洲男人在线无码视频| 99视频在线免费看| 亚洲av无码一区二区三区在线播放 | 亚洲精品成人网站在线播放| 四虎影院在线免费播放| 在线观看免费黄色网址| 亚洲成人午夜电影| 四虎永久免费网站免费观看| 国产一级a毛一级a看免费人娇| 亚洲日本在线免费观看| 亚洲AV网站在线观看| 99免费观看视频| 真正全免费视频a毛片| 亚洲精品国产成人专区| 白白国产永久免费视频| 一级做a爰全过程免费视频| 爱爱帝国亚洲一区二区三区| 久久精品亚洲日本佐佐木明希| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 黄色毛片免费观看|