prss.net
当前位置:首页 >> jAvA 通过jni 向 C 传递一个 jAvA 对象, C 如何取... >>

jAvA 通过jni 向 C 传递一个 jAvA 对象, C 如何取...

对于java传递进来的java对象模型,c要加载java类的原型,根据创建相应的c对象,获取java对象的方法的id,然后调用java对象的方法。比如有个java类customer对象作为jni参数传递到c程序,customer有方法String getName()。 JNIEXPORT jobject JNICA...

http://wenku.baidu.com/view/34048f3069eae009581bec7a.html这可以参数 ~

在java代码中我们会声明native方法,代码非常简单。如下所示 class HelloWorld { public native void displayHelloWorld(); static { System.loadLibrary("hello"); } public static void main(String[] args) { new HelloWorld().displayHelloW...

你可以在类里面使用构造方法给成员变量赋值 比如 下面这个类,有get和set方法,可以赋值,可以取值,不知道是否是你需要的 public class EUser { private String name; private int age; private String gender; public EUser() { } public EUse...

当int或Long传指针的值、不是指针的对象。

Java 与 C 通信只用几种基本的类型,这个清单在 jni.h 中有。 你没有理由把C++ 的“对象”传递给 Java,这是设计错误,传递的东西应该仅限于“数据”。 数据就可以表示成基本类型,比如整数,字符串这几种的组合或数组的组合。

java数组传递给jni实际是指针,只是java禁止你直接在jni里对java数组操作,所以在jni需要对java数组转换为jni里可以操作的数组。典型的还有字符串,c struct等。 之所以禁止jni直接操作数组可能是jvm在安全等方面的考虑。jni调用涉及到java内存...

在C语言里面当你对数组的存取完成后,要确保调用相应的ReleaseXXXArrayElements函数,参数是对应Java数组和GetXXXArrayElements返回的指针。这个释放函数会复制你做的任何变化(这样它们就反射到java数组),然后释放所有相关的资源

你先说是哪个平台呀? 我平时用的较多的是安卓平台.是这么写的: JNIEXPORT jint JNICALL JNI_SetImage(JNIEnv * env, jobject obj, jobject bitmap ) { char *pData=0; AndroidBitmapInfo info; void* pixels; int r=0; if ((r = AndroidBitmap_g...

在C语言里面当你对数组的存取完成后 要确保调用相应的ReleaseXXXArrayElements函数 参数是对应Java数组和GetXXXArrayElements返回的指针。 这个释放函数会复制你做的任何变化(这样它们就反射到java数组) 然后释放所有相关的资源

网站首页 | 网站地图
All rights reserved Powered by www.prss.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com