ndk编译无法识别so库
============问题描述============
编译时的错误如下,求高手解答
"E:\\llj_project\\android-ndk-r9\\ndk-build.cmd" all "Compile thumb : ndkcamera <= com_example_camerandk_NDKCamera.c SharedLibrary : libndkcamera.so Install : libndkcamera.so => libs/armeabi/libndkcamera.so Install : libNetLib.so => libs/armeabi/libNetLib.so E:/llj_project/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-strip: Unable to recognise the format of the input file `./libs/armeabi/libNetLib.so' make: *** [libs/armeabi/libNetLib.so] Error 1 make: *** Deleting file `libs/armeabi/libNetLib.so'
android.mk
LOCAL_PATH := $(call my-dir) include $(LOCAL_PATH)/prebuild/Androidusc.mk include $(CLEAR_VARS) LOCAL_MODULE := ndkcamera LOCAL_SHARED_LIBRARIES := NetLib LOCAL__ALLOW_UNDEFINED_SYMBOLS :=true LOCAL_C_INCLUDES :=com_example_camerandk_NDKCamera.h LOCAL_SRC_FILES := com_example_camerandk_NDKCamera.c TARGET_ARCH_ABI :=armeabi-v7a include $(BUILD_SHARED_LIBRARY)
androidusc.mk
#LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := prebuild/NetLib LOCAL_C_INCLUDES :=/prebuild/\ hi_net_dev_errors.h hi_net_dev_sdk.h hi_type.h hi_voice_api.h LOCAL_SRC_FILES := prebuild/libNetLib.so include $(PREBUILT_SHARED_LIBRARY)
c文件
#include "com_example_camerandk_NDKCamera.h"
#include "./prebuild/hi_net_dev_sdk.h"
#include <jni.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <dlfcn.h>
JNIEXPORT jint JNICALL Java_com_example_camerandk_NDKCamera_init(JNIEnv* env,
jobject thiz) {
void *handle = dlopen("./prebuild/lib/libNetLib.so", RTLD_NOW);
int i = 0;
int (*fun)()=dlsym(handle,"HI_NET_DEV_Init");
i = fun();
dlclose(handle);
// i=HI_NET_DEV_Init();
return i;
}
jni目录结构
============解决方案1============
问他是不是用android-ndk-r9/toolchains/arm-linux-androideabi-4.6 编译器编译的,而且就算他是用的ndk编译出来的必须保证 target 是 armeabi-v7a 因为你的是TARGET_ARCH_ABI :=armeabi-v7a
浙公网安备 33010602011771号