NDK动态库的调用

这篇博客详细介绍了在Android中使用NDK调用动态库的两种情况:内部so调用和调用外部编译好的so。内容包括工程目录结构、mk文件配置、Java文件内容、编译过程以及注意事项,如头文件路径、库路径设置,以及如何检查so文件的模式和方法等。
摘要由CSDN通过智能技术生成

  NDK动态库的调用分两种情况。第一种是:so库和调用程序在同一个目录和源程序 通过同一个mk文件来编译;另外一种情况是so是外部已经编译好了的,调用程序加载调用。下面我们就来分析下面2种so的调用情况:

第一部分: 内部so调用

      A. 先看下工程的目录:

          image     

          test01.java  :Java文件

          test01.c 主so,生成libtest.so,在libtest.so中调用libtutorial.so中的方法

          tutorial01.c tutorial02.c tutorial02.h :生成libtutorial.so

     B. 然后看下具体的mk文件的写法以及java中的文件内容

NDK动态库的调用
package com.example.test;

import android.R.integer;
import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;


public class test01 extends Activity
{

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);


TextView tv = new TextView(this);

int a = getinformation();
String lls = a +"";
tv.setText(lls);
setContentView(tv);
}


public native int getinformation();

static {
System.loadLibrary("test");
}
}

NDK动态库的调用LOCAL_PATH := $(call my-dir)
#获取当前目录
include $(CLEAR_VARS)
#清除一些变量
LOCAL_MODULE := tutorial
#要生成的库名
LOCAL_SRC_FILES := tutorial01.c tutorial02.c
#库对应的源文件
include $(BUILD_SHARED_LIBRARY)
#生成动态库libtutorial.so

include $(CLEAR_VARS)
#清除一些变量
LOCAL_MODULE := test
#定义另外一个库的名
LOCAL_SRC_FILES := test01.c
#定义库对应的源文件
LOCAL_LDLIBS := -ldl -llog
#libtest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值