本文共 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://hkpci.baihongyu.com/