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");

    }

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

  • 相关阅读:
    整数反转
    最长公共前缀
    罗马数字转整数
    单点登录
    VMware Workstation虚拟机密钥
    Pytest 用例内部执行顺序
    判断是不是回文数
    python端口IP字符串是否合法
    python求二叉树深度
    有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值。
  • 原文地址:https://www.cnblogs.com/coolbear/p/3092498.html
Copyright © 2011-2022 走看看