我正在研究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#编写本机代码吗?