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============


引用 6 楼 llj1985522 的回复:
Quote: 引用 2 楼 luowenlong860502 的回复:

很显然,你的 libs/armeabi/libNetLib.so 不是自己编译出来的,而是第三方的,请确定这个lib是armeabi 架构编译,你这个很可能是 x86 或其他架构编译出来的

问了提供者是linux arm


问他是不是用android-ndk-r9/toolchains/arm-linux-androideabi-4.6 编译器编译的,而且就算他是用的ndk编译出来的必须保证 target 是 armeabi-v7a 因为你的是TARGET_ARCH_ABI :=armeabi-v7a

posted on 2014-10-23 16:39  杨本康  阅读(796)  评论(0)    收藏  举报

导航

我要啦免费统计