最近在做项目中遇到这样的问题。
如下步骤:
1. 由C程序生成的SO库(libA.so)。
2. 再做一个so库(libB.so),里面程序会调用之前的so库(libA.so)的API函数。
3. Android做成NDK工程调用so库(libB.so)。
文件Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := BLOCAL_SRC_FILES := Jni.c \
B.c LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE)LOCAL_LDLIBS := -ldl -llog include $(BUILD_SHARED_LIBRARY)
文件B.c中使用dlopen调用库A的函数。
现在我的方法是用绝对路径来调用,即参数1:"/data/data/[proj name]/lib/libA.so"
想问的是,用相对路径应该怎么调用?我感觉是把当前Android工程的路径加到LD_LIBRARY_PATH这个环境变量里,可就是不知道怎么做。
如下步骤:
1. 由C程序生成的SO库(libA.so)。
2. 再做一个so库(libB.so),里面程序会调用之前的so库(libA.so)的API函数。
3. Android做成NDK工程调用so库(libB.so)。
文件Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := BLOCAL_SRC_FILES := Jni.c \
B.c LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE)LOCAL_LDLIBS := -ldl -llog include $(BUILD_SHARED_LIBRARY)
文件B.c中使用dlopen调用库A的函数。
现在我的方法是用绝对路径来调用,即参数1:"/data/data/[proj name]/lib/libA.so"
想问的是,用相对路径应该怎么调用?我感觉是把当前Android工程的路径加到LD_LIBRARY_PATH这个环境变量里,可就是不知道怎么做。
解决方案 »
- 全志A10的uboot启动不了," not definedot_normal
- 紧急!问题一直没解决,drawText方法没有效果
- 怪现象:能解释一下用HttpGet可以获取服务器端的XML文件内容,用httpPost却不行
- 用代码布局,怎么用代码代替selector??
- 请教如何修改Application的label标签
- 如何将android导入到6410的开发板中?
- 如何获得字符串的像数值,长度大小,宽度大小。。。
- 读取服务器上的文件不成功
- [Android]应用图标只当做一个开关 ??
- 安卓sqlite创建第二个表失败
- android应用中使用到文件??? 不是SD卡中,而是打包在apk中的文件!
- 怎么实现修改短信中心号码?
dlopen的第一个参数应该怎么写?
或许可以采用折中的方法,通过调用api来查询current path,然后和相对路径组合成绝对路径来给
dlopen使用
想问下获取当前路径的api是什么函数?
System.loadlibrary("hello");and the libhello.so should place in right folder.
现在我的方法是用绝对路径来调用,即参数1:"/data/data/[proj name]/lib/libA.so"
请问楼主的这一步在eclipse编译工程时,把libA.so放在了哪个目录,谢谢,急用