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

    }

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

  • 相关阅读:
    centos7修改网卡名称
    xtrabackup备份恢复过程
    centos 设置删除提示
    cetos6 安装samba共享文件夹
    centos 安装cacti监控
    centos6 搭建hdwiki
    centos6.8安装superctl 后台管理工具
    centos6.5 安装ansible,管理多台服务器
    CreateParams作用及重写
    c# 获取当前应用程序的路径
  • 原文地址:https://www.cnblogs.com/coolbear/p/3092498.html
Copyright © 2011-2022 走看看