使用jni从java传递多个参数到c++时,如果是多个参数,当是string类型时,参数之间用;分割
- void sendToAndoridAdmobId(const char* id)
- {
- JniMethodInfo methodInfo;
- if (!JniHelper::getStaticMethodInfo(methodInfo, JavaTool_ClassName, "setDomobUnitId", "(Ljava/lang/String;)V"))
- {
- return;
- }
- jstring l_stringUrl = methodInfo.env->NewStringUTF(id);
- methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID, l_stringUrl);
- methodInfo.env->DeleteLocalRef(methodInfo.classID);
- }
对应的java代码
- public static void setDomobUnitId(String id)
- {
- JavaTool.DOMOB_UNIT_ID = id;
- }
但是如果是int类型,就直接挨在一起写了
- void sendToAndoridWidthHeight(int width ,int height)
- {
- JniMethodInfo methodInfo;
- if (! JniHelper::getStaticMethodInfo(methodInfo, JavaTool_ClassName, "sendToAndroidWidthHeight", "(II)V"))
- {
- return;
- }
- methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID, width,height);
- methodInfo.env->DeleteLocalRef(methodInfo.classID);
- }
对应的java代码
- public static void sendToAndroidWidthHeight(int width , int height)
- {
- JavaTool.width = width;
- JavaTool.height = height;
- }
可以用javap -s -p yourclassname 这个命令得到内部类型签名