博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ndroid下动态链接库.so调用的简单…
阅读量:4053 次
发布时间:2019-05-25

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

在这篇文章中(),我在Android下使用dlopen函数调用.so文件没有成功,于是只得改用在编译过程中指定.so文件的方式加以调用,这次在Android下倒是通过了。
先在(Android源码目录)/development/目录下建立一个文件夹,比如起名叫 test123
在test123目录下建立以下三个文件:test.c、max.c、Android.mk
#include<stdio.h>
extern max(int,int);
int main()
{
    int a=5,b=3,c;
    c=max(a,b);
    printf("%d与%d相比,%d大。\n",a,b,c);
    return 0;
}
int max(int x,int y)
{
    return x>y?x:y;
}
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
    max.c
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE:= libmax
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
    test.c
LOCAL_CFLAGS=-lmax
LOCAL_LDFLAGS:= \
    -Lout/target/product/generic/obj/lib
LOCAL_SHARED_LIBRARIES := \
    libmax
LOCAL_MODULE:= test
include $(BUILD_EXECUTABLE)
建立好这三个文件后,用cd命令回到Android源码目录下,执行make test。注意不是文件夹名 test123
再用命令
adb push
(Android源码目录)/out/target/product/generic/system/bin/test /data
adb push out/target/product/generic/system/lib/libmax.so /system/lib
将test程序和编译好的libmax.so送进模拟器下相应的位置,其中
libmax.so应该放到 /system/lib下,不然test找不到它,test程序就无所谓了,放在什么地方都行。
用adb shell进入
模拟器的控制台,当然事先要先把emulator启动起来,否则adb shell会失败。
进入test所在目录,./test运行
# ./test
5与3相比,5大。

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

你可能感兴趣的文章
苹果Swift编程语言入门教程【中文版】
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++模板与泛型编程
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>