当前位置: 代码迷 >> Android >> android jni菜鸟纠结有关问题,
  详细解决方案

android jni菜鸟纠结有关问题,

热度:98   发布时间:2016-04-28 05:53:00.0
android jni初学者纠结问题,急急急!!!!!
本帖最后由 liuwanmeng 于 2014-04-29 13:32:24 编辑
最近要用android jni做毕业设计,可最基本的参数传递问题都没有学会,请各位高手们赐教,怎么从android端传int类型的数据让android jni的方法接收并回传一个jint类型让android显示结果,我是这样做的,结果不行
下面是android的java代码:

public class MainActivity extends Activity {
TextView tv;
Button add;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView) this.findViewById(R.id.textView1);
tv.setText(myhello());
add=(Button) this.findViewById(R.id.add);

add.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), add(100,1), 1).show();
}
});

}

public native String myhello();
public native int add(int a,int b);
static{
System.loadLibrary("JNITest");
}
}


下面是我写的C++的代码:

#include <jni.h>
#include <string.h>
#include<android/bitmap.h>
extern "C" {
    JNIEXPORT jstring JNICALL Java_com_example_jnitest_MainActivity_myhello(JNIEnv * env, jobject obj);
    JNIEXPORT jint JNICALL Java_com_example_jnitest_MainActivity_add(JNIEnv * env, jobject obj,jint a, jint b);
};
JNIEXPORT jstring JNICALL Java_com_example_jnitest_MainActivity_myhello(JNIEnv * env, jobject obj)
{
return env->NewStringUTF("Hello From CPP");
}

JNIEXPORT jint JNICALL Java_com_example_jnitest_MainActivity_add(JNIEnv * env, jobject obj,jint a, jint b)
{
return a+b;
}



帮我看看到底哪里有问题,我不明白为什么myhell()这个函数可以调用,而add()这个函数调用就出错了,谢谢指正
------解决方案--------------------
Toast.makeText(getApplicationContext(), add(100,1), 1).show();

这句有问题,makeText的第二个参数是资源ID,你随便给个int,肯定是要抛异常的,可以写成"Result: " + add(100, 1)

JNI看起来貌似没啥问题
  相关解决方案