当前位置:  技术问答>java相关

JNI 访问对象域, 搞了半天没成功!急!

    来源: 互联网  发布时间:2015-08-19

    本文导语:  C++程序 JNIEXPORT jstring JNICALL Java_jniTest_sprint   (JNIEnv * env, jobject jObj, jstring jStr, jint jI) { jclass cl = env->GetObjectClass(jObj); jfieldID  jfd = env->GetFieldID( cl, "i", "I"); jint i = env->GetIntField(cl, jfd); env->SetIntField(c...

C++程序
JNIEXPORT jstring JNICALL Java_jniTest_sprint
  (JNIEnv * env, jobject jObj, jstring jStr, jint jI)

{
jclass cl = env->GetObjectClass(jObj);
jfieldID  jfd = env->GetFieldID( cl, "i", "I");
jint i = env->GetIntField(cl, jfd);
env->SetIntField(cl, jfd, jI);
return jStr;
}

JAVA类:
public class jniTest
{
    int i ;
    public  native String sprint(String format, int x);
    public jniTest(){
        i = 5;
    }
    static 
    {
        System.loadLibrary("jniTest");
    }
}
测试程序:
public class Printf2 {

    public static void main(String[] args) 
    {
jniTest t = new jniTest();
        System.out.println(t.i);
t.sprint("abcdefg", 20);
System.out.println(t.i);
    }
}

但成员变量i的值一直没变.怎么办啊? 我想通过C++本地函数改变java成员变量值.大家帮忙啊!

|
jint i = env->GetIntField(cl, jfd);
env->SetIntField(cl, jfd, jI);
两句中的cl改为jobj.谢谢!

|
在你c++程序里return jstr;语句错了,改成(*env)->NewStringUTF(env,jStr);

    
 
 

您可能感兴趣的文章:

  • JNI 访问String类型成员变量
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编译JNI.h报大量错
  • JNI的问题
  • JNI++
  • 关于JNI的中文问题(急急急急急)
  • jni 问题 急急急 分数不够可以再加
  • jni的方法,用java调用c的代码,遇到的问题!
  • javah -jni myclass???在线...
  • 请问如何用jni类来调用一个非java写的外部exe?谢谢!
  • 难道没有人可以告我如何在applet中使用jni方法吗?
  • 听同事说JNI很烂! 很容易出错! 是真的吗? 来着有分!
  • jni的一个小问题--路径问题?
  • 请问JNI是个什么东西?
  • solaris 上编译JNI库的问题 iis7站长之家
  • 哪儿有JNI的资料?
  • 100分求java +VC6.0使用JNI的最简单例子
  • solaris 上编译JNI库的问题
  • JNI 助手类 NativeCall
  • JNI代码生成器 JNIGen
  • JNI编程工具 Janet
  • LevelDB JNI


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3