博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android studio 调用c/c++工程
阅读量:5994 次
发布时间:2019-06-20

本文共 2381 字,大约阅读时间需要 7 分钟。

 

首先新建一个工程

  这个工程主要测试通过C程序返回一个字符串显示在界面

      最主要的部分已经标注。

  1. 第一步:JNI所对应的java类:
1 package com.sunxy.jnitest.jni; 2  3 /** 4  * Created by sunxy on 2016/7/28. 5  */ 6  7 public class SunxyNDk { 8  9     static {10         System.loadLibrary("JniDemo");11     }12 13     public static native String getStringFromNative();14 }

 2. 第二步:编写对应的C程序:

    C程序主要由两部分构成 .h文件和 .cpp文件

    (1).h文件。定义方法。

1 // 2 // Created by sunxy on 2016/7/27. 3 // 4 /* DO NOT EDIT THIS FILE - it is machine generated */ 5 #include 
6 /* Header for class com_sunxy_jnitest_jni_SunxyNDk */ 7 8 #ifndef _Included_com_sunxy_jnitest_jni_SunxyNDk 9 #define _Included_com_sunxy_jnitest_jni_SunxyNDk10 #ifdef __cplusplus11 extern "C" {12 #endif13 /*14 * Class: com_sunxy_jnitest_jni_SunxyNDk15 * Method: getStringFromNative16 * Signature: (I)I17 */18 19 JNIEXPORT jstring JNICALL Java_com_sunxy_jnitest_jni_SunxyNDk_getStringFromNative20 (JNIEnv *env, jobject jObj);21 #ifdef __cplusplus22 }23 #endif24 #endif

    (2).cpp文件。实现方法。

1 // 2 // Created by sunxy on 2016/7/28. 3 // 4  5 #include "sunxy.h" 6  7  8 JNIEXPORT jstring JNICALL Java_com_sunxy_jnitest_jni_SunxyNDk_getStringFromNative 9         (JNIEnv *env, jobject jObj){10 //    return (*env)->NewStringUTF(env,"Hello From JNI!");11 12     jstring strRet = env->NewStringUTF("HelloWorld from Sunxy JNI !");13     return strRet;14 }

  3.第三步:在app文件下的 build.gradle文件中加入 moduleName "XXX"  设置生成的文件名 

  

 

  4. 第四步:在 gradle.properties 加入

            android.useDeprecatedNdk=true

 

 

 经过调试发现 .h 和 .cpp 这两个文件可以只写一个 .cpp 文件同样可以实现相同的效果

1 // 2 // Created by sunxy on 2016/7/27. 3 // 4 /* DO NOT EDIT THIS FILE - it is machine generated */ 5 #include 
6 /* Header for class com_sunxy_jnitest_jni_SunxyNDk */ 7 8 #ifndef _Included_com_sunxy_jnitest_jni_SunxyNDk 9 #define _Included_com_sunxy_jnitest_jni_SunxyNDk10 #ifdef __cplusplus11 extern "C" {12 #endif13 /*14 * Class: com_sunxy_jnitest_jni_SunxyNDk15 * Method: getStringFromNative16 * Signature: (I)I17 */18 19 JNIEXPORT jstring JNICALL Java_com_sunxy_jnitest_jni_SunxyNDk_getStringFromNative20 (JNIEnv *env, jobject jObj){21 // return (*env)->NewStringUTF(env,"Hello From JNI!");22 23 jstring strRet = env->NewStringUTF("HelloWorld from Sunxy JNI !");24 return strRet;25 }26 27 #ifdef __cplusplus28 }29 #endif30 #endif

 

 最后运行程序就可以看结果了。

 

    欢迎各位同志们批评、指正。

 

转载地址:http://iiqlx.baihongyu.com/

你可能感兴趣的文章
获取用户的真实ip
查看>>
不同平台的线程并发接口对比
查看>>
在Ubuntu14.4(32位)中配置I.MX6的QT编译环境
查看>>
BZOJ 3530: [Sdoi2014]数数 [AC自动机 数位DP]
查看>>
墨卡托投影、高斯-克吕格投影、UTM投影及我国分带方法
查看>>
Android中通过反射来设置Toast的显示时间
查看>>
Vysor Pro破解助手
查看>>
理顺FFT
查看>>
003-spring结合java类调用quartz
查看>>
Idea 常用功能汇总,工作中常用技巧,移出请说明原因,笔记花了好长时间汇总的...
查看>>
php给图片加入文字水印
查看>>
iOS开发-sqlite3使用
查看>>
(5)QlikView中的RowNo()函数
查看>>
SiteMesh2-示例工程
查看>>
poj 1087 A Plug for UNIX 【最大流】
查看>>
Photoshop制作的ico图标方法
查看>>
HDU 1241 Oil Deposits (DFS)
查看>>
【翻译自mos文章】注意: ASMB process exiting due to lack of ASM file activity
查看>>
ucgui界面设计演示样例2
查看>>
蓝桥杯练习系统——基础练习 十六进制转十进制
查看>>