我正在使用NDK创建数学运算的演示,如加法,减法,乘法和除法.
我能够创建库并从本机代码获取响应但结果不正确我的意思是它是随机静态值.
Calculator.c类
#include <stdio.h> #include <jni.h> jint Java_com_example_jni_calculator_Calculator_add(JNIEnv* env,jint a,jint b) { return (jint)(a + b); } jint Java_com_example_jni_calculator_Calculator_substract(JNIEnv* env,jint b) { return (jint)(a - b); } jint Java_com_example_jni_calculator_Calculator_multiply(JNIEnv* env,jint b) { return (jint)(a * b); } jint Java_com_example_jni_calculator_Calculator_devide(JNIEnv* env,jint b) { return (jint)(a / b); }
Calculator.java类用于加载库和启动本机方法.
public class Calculator { static { System.loadLibrary("Calculator"); } public native int add(int a,int b); public native int substract(int a,int b); public native int multiply(int a,int b); public native int devide(int a,int b); }
我使用下面的代码来显示结果:
int num1 = Integer.parseInt(txtNumber1.getText().toString().trim()); int num2 = Integer.parseInt(txtNumber2.getText().toString().trim()); tvResult.setText(String.format("%1$d + %2$d is equals to %3$d",num1,num2,mCalculator.add(num1,num2)));
产量
解决方法
您正在声明非静态方法,并且不传递对“jobject”的引用 – 这就是您在返回值中获取垃圾的原因.
要修复该错误,您必须在本机代码中为“jobject”添加一个额外的参数,就在“env”参数之后.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。