如何将对象从本机代码返回到c#?

时间:2015-07-12 13:06:48

标签: c# android java-native-interface native

我正在研究C#应用程序,我希望将对象从本机代码返回到c#。 我使用Android和JNI做了同样的事情,工作正常,请在下面找到片段:
JNI代码:

        JNIEXPORT jobject JNICALL Java_com_example_nativeaudio_NativeAudio_mpGetCurrentStatus(
                JNIEnv *env, jobject obj) {

            jclass cls = (*env)->FindClass(env, "com/example/nativeaudio/CurrentStatusDTO");
// calling constructor
            jmethodID constructor = (*env)->GetMethodID(env, cls, "<init>", "(JJI)V");
            jvalue args[3];
            args[0].j = 23; //value for size
            args[1].j = 50; //value for timestamp
            args[2].i = 100; //value for clipNote
            jobject object = (*env)->NewObjectA(env, cls, constructor, args);
            return object;
    }

这是我的DTO课程CurrentStatusDTO。

public class CurrentStatusDTO {

    private long size;
    private long timestamp;
    private int clipNote;

    public CurrentStatusDTO(long size, long timestamp, int clipNote) {
        ...setting fields...
    }
    .....getters & setters.....
}

Android代码:

// declare native method
public native CurrentStatusDTO mpGetCurrentStatus(); 

// calling native method from some event.
CurrentStatusDTO currentStatus = mpGetCurrentStatus();

所以,在android中我可以调用返回CurrentStatusDTO对象的native函数 现在,我想用c#做同样的事情。你能帮我解决一下如何做到这一点以及如何为c#编写本机代码吗?

0 个答案:

没有答案