QT学习调用JAR的问题
牧牛童子 2017-08-05 12:18:42 初学,照搬网上示例。
test.java文件内容如下:
package test;
import java.io.PrintStream;
public class Test
{
public Test(int i)
{
System.out.println("Test实例化了!");
}
public static int fun1()
{
System.out.println("静态函数fun1执行了。");
return 11;
}
}
用jar cvf test.jar test.java 生成jar包。置于android\libs目录下。构建时也看到加载了test.jar的构建信息输出。
QT代码:
jint a = 2;
jint b = 4;
jint max=0;
max = QAndroidJniObject::callStaticMethod<jint>("java/lang/Math", "max", "(II)I", a, b); //系统标准函数,调用成功。
max = QAndroidJniObject::callStaticMethod<jint>("test/Test","fun1"); //调用失败。若正确,应该返回 11才对。
QString msg01=QString::fromStdString(int2string(max));
QMessageBox::information(NULL,"a+b=?",msg01);
问题1:自己的java测试类,如何写才是正确的,方能调用成功?我的错误在哪里?
问题2:QAndroidJniObject::callStaticMethod<jint>("java/lang/Math", "max", "(II)I", a, b); 中的 "(II)I" 代表什么意思?输入参数两个且为整型? 若输入参数再加一个string型,是不是应该是"(IIC)I"? (看网上说,整型用“I”标记。 )
问题3:QAndroidJniObject jartestObj("test/Test","(I)V",10); 见网上示例代码是这么写的,请问"(I)V"中的V代表什么?
谢谢。