各位大牛,我现在在学习Android下NDK调用第三方的库,我现在不明白的是这个so必须得是通过ndk的方式编译成的吗?
现在我的so是在linux下通过交叉编译的方式形成的,那这样的话在ndk下可以调用吗?我按照论坛里用预编译的方法试过了,不好使啊?提示找不到第三方库里的函数?
我又按照网上的提供的这种方法编译通过了,可是在载入的时候,就出错了,错误信息是打不开生成的这个库。
其中android.mk如下:
LOCAL_PATH:= $(call my-dir)
获取local_path 路径
MY_LOCAL_PATH := $(LOCAL_PATH)
存储一个根路径的指针
include $(CLEAR_VARS)
清除所有local变量
LOCAL_PRELINK_MODULE := false
不引入前制模块
LOCAL_SRC_FILES := libIMARJni.c
本地文件路径
LOCAL_SHARED_LIBRARIES := libIMAR
第三方库文件,不用加后缀.so
LOCAL_PREBUILT_LIBS : = $(LOCAL_PATH)/libIMAR.so
预载入库文件,第三方库绝对路径
LOCAL_LDFLAGS := $(LOCAL_PATH)/libIMAR.so
这一句是必须的,加载库文件标识,第三方库绝对路径
LOCAL_MODULE += libIMARJni
当前模块名称,因为引用了别的模块所以使用 +=
LOCAL_PATH:= $(MY_LOCAL_PATH)
重置LOCAL_PATH指针
include $(BUILD_SHARED_LIBRARY)
创建动态库
现在我的so是在linux下通过交叉编译的方式形成的,那这样的话在ndk下可以调用吗?我按照论坛里用预编译的方法试过了,不好使啊?提示找不到第三方库里的函数?
我又按照网上的提供的这种方法编译通过了,可是在载入的时候,就出错了,错误信息是打不开生成的这个库。
其中android.mk如下:
LOCAL_PATH:= $(call my-dir)
获取local_path 路径
MY_LOCAL_PATH := $(LOCAL_PATH)
存储一个根路径的指针
include $(CLEAR_VARS)
清除所有local变量
LOCAL_PRELINK_MODULE := false
不引入前制模块
LOCAL_SRC_FILES := libIMARJni.c
本地文件路径
LOCAL_SHARED_LIBRARIES := libIMAR
第三方库文件,不用加后缀.so
LOCAL_PREBUILT_LIBS : = $(LOCAL_PATH)/libIMAR.so
预载入库文件,第三方库绝对路径
LOCAL_LDFLAGS := $(LOCAL_PATH)/libIMAR.so
这一句是必须的,加载库文件标识,第三方库绝对路径
LOCAL_MODULE += libIMARJni
当前模块名称,因为引用了别的模块所以使用 +=
LOCAL_PATH:= $(MY_LOCAL_PATH)
重置LOCAL_PATH指针
include $(BUILD_SHARED_LIBRARY)
创建动态库
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货