Từ 1 tới 1 trên tổng số 1 kết quả

Đề tài: Truyền kiểu struct từ C lên JAVA?

  1. #1
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    Mặc định Truyền kiểu struct từ C lên JAVA?

    C Code:
    1. #include <jni.h>
    2. #include "Hello.h"
    3. #include <stdio.h>
    4.  
    5. struct student
    6. {
    7.     char *name;
    8.     int age;
    9. }student1;
    10.  
    11. student1.name="Jack";
    12. student1.age=23;
    13.  
    14. JNIEXPORT jobject JNICALL
    15. Java_Hello_sayHello(JNIEnv *env, jobject obj, jintArray arr)
    16. {
    17.     return arr;
    18. }

    java của mình thế này

    Java Code:
    1. public class Hello
    2. {
    3.     static
    4.     {
    5.         System.loadLibrary("hello");
    6.     }
    7.  
    8.     public native Object sayHello(int [] arr);
    9.     public static void main(String[] args)
    10.     {
    11.         Hello p = new Hello();
    12.         int arr[] = new int[10];
    13.         for (int i = 0; i < 10; i++) {
    14.             arr[i] = i;
    15.         }
    16.         int [] len = (int[]) p.sayHello(arr);
    17.  
    18.         System.out.println("sum = " + len.length); //length of the array
    19.     }
    20. }

    bây giờ từ C mình muốn return lại số sinh viên đã đăng ký, phỉa làm thế nào vậy ???


    sửa tiếp
    Java Code:
    1. public class Hello
    2. {
    3.     static
    4.     {
    5.         System.loadLibrary("hello");
    6.     }
    7.  
    8.     public static native Student sayHello();
    9.     public static void main(String[] args)
    10.     {
    11.         Hello p = new Hello();
    12.  
    13.         Student len = p.sayHello();
    14.  
    15.         System.out.println("Name = " + len.name);
    16.         System.out.println("Age = " + len.age);
    17.     }
    18.  
    19.     public class Student
    20.     {
    21.         private int age;
    22.         private String name;
    23.  
    24.         public Student(int age, String name)
    25.         {
    26.             this.age = age;
    27.             this.name = name;
    28.         }
    29.  
    30.         // the rest of the class
    31.     }
    32.  
    33. }

    C Code:
    1. #include <jni.h>
    2. #include "Hello.h"
    3. #include <stdio.h>
    4.  
    5. struct student
    6. {
    7.     char *name;
    8.     int age;
    9.  
    10.  
    11. }student1;
    12.  
    13. JNIEXPORT jobject JNICALL
    14. Java_Hello_sayHello(JNIEnv *env, jclass cls)
    15. {
    16.  
    17.     jmethodID constructor;
    18.     jvalue args[2];
    19.     jobject object;
    20.  
    21.  
    22.     cls = (*env)->FindClass(env, "Hello$Student");
    23.  
    24.     constructor = (*env)->GetMethodID(env, cls, "<init>", "(ILjava/lang/String V");
    25.  
    26.     args[0].i = 23;
    27.     args[1].l = (*env)->NewStringUTF(env, "Jack");
    28.     object = (*env)->NewObjectA(env, cls, constructor, args);
    29.  
    30.     return object;
    31. }


    A – Exemple

    Programmes Java :
    Java Code:
    1. public class Appel {
    2.     private native Objet AppelNative();
    3.     public static void main(String[] args) {
    4.         Objet newObj = null;
    5.         Appel a = new Appel();
    6.         newObj = a.AppelNative();
    7.         System.out.println(newObj.getS());
    8.     }
    9.     static { System.loadLibrary("Librairie"); }
    10. }
    11. public class Objet {
    12.     private int i;
    13.     private String s;
    14.     public Objet(int i, String s) {
    15.         this.i = i;
    16.         this.s = s;
    17.     }
    18.     public String getS() { return s; }
    19. }

    Programme C :
    Java Code:
    1. #include <jni.h>
    2. #include "Appel.h"
    3. JNIEXPORT jobject JNICALL Java_Appel_AppelNative (JNIEnv *env, jobject obj) {
    4.     jclass classe = (*env)->FindClass(env, "Objet");
    5.     jmethodID mid = (*env)->GetMethodID(env, classe, "<init>", "(ILjava/lang/String;)V");
    6.     jint valeur = 10;
    7.     jstring chaine = (*env)->NewStringUTF(env, "hello");
    8.     jobject objet = (*env)->NewObject(env, classe, mid, valeur, chaine);
    9.     return objet;
    10. }
    Đã được chỉnh sửa lần cuối bởi haian : 06-09-2011 lúc 03:56 PM.
    cố gắng

Các đề tài tương tự

  1. Bài tập C Giúp mình bài tập truyền struct vào function vs
    Gửi bởi vutqse02977 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 30-01-2013, 11:00 AM
  2. Lập trình C Cách truyền một xâu nhập từ bàn phím vào struct trong C?
    Gửi bởi viethai1431 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 30-03-2012, 12:31 PM
  3. [JNI] Cách truyền Struct từ JAVA parameter xuống C++
    Gửi bởi haian trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 0
    Bài viết cuối: 31-08-2011, 02:34 PM
  4. chuyển dữ liệu từ datatable lên struct
    Gửi bởi lengocktv trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 11-08-2011, 08:36 AM
  5. Mã nguồn C Lỗi truyền tham số cho hàm là một struct bị lỗi
    Gửi bởi tinhspt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 08-01-2011, 10:35 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn