zoukankan      html  css  js  c++  java
  • 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");

    }

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

  • 相关阅读:
    ACM 人见人爱A^B
    ACM Max Factor
    ACM Primes
    ACM Least Common Multiple
    ACM 最小公倍数
    ACM Bone Collector
    ACM 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
    ACM Piggy Bank
    ACM 饭卡
    ACM Where is the Marble?
  • 原文地址:https://www.cnblogs.com/coolbear/p/3092498.html
Copyright © 2011-2022 走看看