Android .c和.cpp文件中实现.java文件中native函数的区别

参考:四维空间hanyezhiyu8的博客。

使用ADT-Eclipse新建一个Android Application Project,功成名TestA,右击TestA,Android Tools-Add Native Support...,完成后工程中会增加一个jni文件夹,里面有TestA.cpp和Android.mk两个文件,其中TestA.cpp中只有#include <jni.h>一句话。

--------------------------------------------------------

在MainActivity.java中添加一个native函数

public native String stringFromJNI();

static {

  System.loadLibrary("TestA");

}

修改onCreate()函数,将setContentView(R.layout.activity_main);修改为

TextView tv=new TextView(this);

tv.setText( stringFromJNI() );//调用C++实现的native函数

setContentView(tv);

--------------------------------------------------------

修改TestA.cpp文件,注意c++文件中必须使用extern "C",否则会出现java调用native失败,而C文件中不用extern "C"

#include<string.h>

extern "C" {

jstring Java_com_example_testa_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz);

};

jstring Java_com_example_testa_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz)

{

  return env->NewStringUTF("Hello Android NDK");

}

--------------------------------------------------------

原文地址:https://www.cnblogs.com/coolbear/p/3092498.html