琢磨了两天还是没的思路1。就是当Java方法的返回值为string类型时,总是出问题,其他返回为int或者boolean等没问题。c++中char*,但在这里返回的时候我以object类型处理, 以(jstring)来强制转换,但是每次返回都是都是空。(????)
2。通过C++对java的方法进行写时,若java方法是两个参数,比如int setNewFlag(int position,boolean bls)。。要传递参数 在C++中的类型怎么设置?

解决方案 »

  1.   

    给你一个建议  最好不好返回复杂的类型,用最原始的类型比较好。
    不过string 肯定是没有问题的
    建议你去看一本书
    核心技术2 
    那里的JNI的篇章很不错。2。通过C++对java的方法进行写时,若java方法是两个参数,比如int setNewFlag(int position,boolean bls)。。要传递参数 在C++中的类型怎么设置?查看用JAVAH 生成的.h文件,那里面有函数传递的规则
    不需要你自己去记忆
      

  2.   

    恩。。找找。那个反编译文件 我晓得 我说的是两个参数及其以上的时候 怎么写 是object嘛?好像没写进去啊
      

  3.   

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class NativeTest */#ifndef _Included_NativeTest
    #define _Included_NativeTest
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     NativeTest
     * Method:    twoFields
     * Signature: (ILjava/lang/String;)I    这里就是在C++的参数类型
     */
    JNIEXPORT jint JNICALL Java_NativeTest_twoFields
      (JNIEnv *, jclass, jint, jstring);#ifdef __cplusplus
    }
    #endif
    #endif
      

  4.   

    没有哦 我找了英文版的core2 advance我的意思是这个:
    比如你在上篇提到的这个,(ILjava/lang/String;)I 
    在C中写的时候 callIntMethod(cls,methodid,*******);
    第三个参数用什么形式 怎么写进去?
    我采用 jobject不行,采用array也不妥 。。埃