博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android NDK开发_C++多文件
阅读量:6283 次
发布时间:2019-06-22

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

hot3.png

//我自己测试的一个例子//nativecpp.h#ifndef NATIVECPP_H_#define NATIVECPP_H_int nativeAdd(int x,int y); //C++本地函数声明#endif /* NATIVECPP_H_ *///====================================//nativecpp.cpp#include "nativecpp.h"int nativeAdd(int x,int y) //C++本地函数实现{    return (x*x+y*y);}//====================================//jnicpp.h#ifndef JNICPP_H_#define JNICPP_H_#include 
#include
extern "C"{JNIEXPORT jint JNICALL Java_com_yprnet_myndkapp1_NDKApp1Activity_Toadd(JNIEnv *env,jobject obj,jint value1,jint value2); //标准的JNI调用函数声明}#endif /* JNICPP_H_ *///====================================//MyNDKApp1.cpp#include "jnicpp.h"#include "nativecpp.h"jint JNICALL Java_com_yprnet_myndkapp1_NDKApp1Activity_Toadd(JNIEnv *env,jobject obj,jint value1,jint value2) //标准的JNI调用函数实现{ value1=value1*10; value2=value2*10; return nativeAdd(value1,value2); //JNI函数调用C++本地函数}//====================================//Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := MyNDKApp1### Add all source file names to be included in lib separated by a whitespaceLOCAL_SRC_FILES := MyNDKApp1.cpp nativecpp.cppinclude $(BUILD_SHARED_LIBRARY)//====================================//NDKApp1Activity.javapackage com.yprnet.myndkapp1;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.TextView;import android.widget.Button;public class NDKApp1Activity extends Activity { static { System.loadLibrary("MyNDKApp1"); //加载库,库名为去掉前缀lib和后缀so } public native int Toadd(int x,int y); //定义原生方法 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ndkapp1); Button btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ int num=Toadd(3,5); //调用NDK方法相加 String str=String.valueOf(num); TextView myTextView=null; myTextView=(TextView)findViewById(R.id.textView1); myTextView.setText((CharSequence)str); myTextView=null; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_ndkapp1, menu); return true; }}//======================================//======================================//======================================//========================//Android NDK开发包上的一个例子//android-ndk-r8b\samples\two-libs//========================//first.h#ifndef FIRST_H#define FIRST_Hextern int first(int x, int y);#endif /* FIRST_H *///========================//first.c#include "first.h"int first(int x, int y){ return x + y;}//========================//second.c#include "first.h"#include
jintJava_com_example_twolibs_TwoLibs_add( JNIEnv* env, jobject this, jint x, jint y ){ return first(x, y);}//========================//Android.mkLOCAL_PATH:= $(call my-dir)# first lib, which will be built statically#include $(CLEAR_VARS)LOCAL_MODULE := libtwolib-firstLOCAL_SRC_FILES := first.cinclude $(BUILD_STATIC_LIBRARY)# second lib, which will depend on and include the first one#include $(CLEAR_VARS)LOCAL_MODULE := libtwolib-secondLOCAL_SRC_FILES := second.cLOCAL_STATIC_LIBRARIES := libtwolib-firstinclude $(BUILD_SHARED_LIBRARY)//========================//TwoLibs.javapackage com.example.twolibs;import android.app.Activity;import android.widget.TextView;import android.os.Bundle;public class TwoLibs extends Activity{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); int x = 1000; int y = 42; // here, we dynamically load the library at runtime // before calling the native method. // System.loadLibrary("twolib-second"); int z = add(x, y); tv.setText( "The sum of " + x + " and " + y + " is " + z ); setContentView(tv); } public native int add(int x, int y);}

转载于:https://my.oschina.net/u/186539/blog/85662

你可能感兴趣的文章
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>