jni 地址传递 本帖最后由 uqiang 于 2009-12-13 19:08:52 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 恩, 这个问题我前段时间也在搞, 最后的结论是, 用JAVA中的对象来代替C中的基本数据类型.就拿你的例子来说, 要改变那个形参INT的值, 只能这样:JAVA中的代码:native void f0 (Integer a);JNI中的C代码:f0 (jobject a){//获取INT值 jclass ji = jEnv->GetObjectClass( a ); jmethodID mid = jEnv->GetMethodID( ji, "intValue", "()I" ); int tmpA = jEnv->CallIntMethod( a, mid ); tmpA ++;//设置INT值 jclass ji = jEnv->GetObjectClass( a ); jmethodID jIntConstruct = jEnv->GetMethodID( ji, "<init>", "(I)V"); jEnv->CallVoidMethod( a, jIntConstruct, tmpA );} 一道可以锻炼你思维的面试题,高手请进?在线等!!! 多线程问题 栏目结构类型的迭代如何做,请高人教我! C 数据结构 站的操作 统计出字符字母出现的次数, 并以字母顺序输出并带上统计数量 拜托大家帮帮我吧,初学者得大问题~! txt文件如何转换成传真可识别的tif文件 在java里怎么获得onExit()事件? 读文件的困惑,为什么成了死循环!!! 一台电脑(包括机箱和显示器)有多大功率?(瓦) 怎样识别日文汉字与中文汉字 JMenuBar菜单无法初始化显示
native void f0 (Integer a);JNI中的C代码:
f0 (jobject a)
{
//获取INT值
jclass ji = jEnv->GetObjectClass( a );
jmethodID mid = jEnv->GetMethodID( ji, "intValue", "()I" );
int tmpA = jEnv->CallIntMethod( a, mid ); tmpA ++;//设置INT值
jclass ji = jEnv->GetObjectClass( a );
jmethodID jIntConstruct = jEnv->GetMethodID( ji, "<init>", "(I)V");
jEnv->CallVoidMethod( a, jIntConstruct, tmpA );
}