请问:NDK环境,动态调用SO库的有关问题
请教:NDK环境,动态调用SO库的问题
最近在做项目中遇到这样的问题。
如下步骤:
1. 由C程序生成的SO库(libA.so)。
2. 再做一个so库(libB.so),里面程序会调用之前的so库(libA.so)的API函数。
3. Android做成NDK工程调用so库(libB.so)。
文件Android.mk
文件B.c中使用dlopen调用库A的函数。
现在我的方法是用绝对路径来调用,即参数1:"/data/data/[proj name]/lib/libA.so"
想问的是,用相对路径应该怎么调用?
我感觉是把当前Android工程的路径加到LD_LIBRARY_PATH这个环境变量里,可就是不知道怎么做。
------解决方案--------------------
如果可以把liba生成成static_lib或者shared_lib,那么就可以在Static_LIB_PATH=libA或者SHARED_LIB_PATH=libA这种来编译了。
------解决方案--------------------
最近在做项目中遇到这样的问题。
如下步骤:
1. 由C程序生成的SO库(libA.so)。
2. 再做一个so库(libB.so),里面程序会调用之前的so库(libA.so)的API函数。
3. Android做成NDK工程调用so库(libB.so)。
文件Android.mk
- C/C++ code
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := B LOCAL_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这个环境变量里,可就是不知道怎么做。
------解决方案--------------------
如果可以把liba生成成static_lib或者shared_lib,那么就可以在Static_LIB_PATH=libA或者SHARED_LIB_PATH=libA这种来编译了。
------解决方案--------------------