编译.c库Eclipse for Android错误

时间:2015-05-26 16:14:35

标签: android c eclipse android-ndk android-library

我使用Eclipse for Windows,Android SDK和Android NDK(我确定所有路径都设置为相关的)。

我正在寻找在jni文件夹中编译.c库locatad,但发生了一些错误。这个库依赖于外部.so库,这些是我的Makefile,Android.mk和库: jni folder

Android.mk

LOCAL_PATH := $(call my-dir)

 #---------------------------------------------------------------

 include $(CLEAR_VARS)
 LOCAL_MODULE := pdbeatdetection
 LOCAL_C_INCLUDES := $(LOCAL_PATH)\C:\PROGRAMMING\pd-0.45-4\src
 LOCAL_CFLAGS := -DPD
 LOCAL_SRC_FILES := pdbeatdetection.c
 LOCAL_LDLIBS := -L$(LOCAL_PATH)\C:\PROGRAMMING\PdCore\libs\armeabi\ -lpdnative
 include $(BUILD_SHARED_LIBRARY)

Makefile

all:
C:\PROGRAMMING\android-ndk-r10d\ndk-build.cmd
mkdir ../tmp
cp ..\libs\armeabi\libpdBeatDetection.so ..\tmp\pdbeatdetection.pd_linux
cd ..\tmp && zip externals.zip *.pd_linux && mv externals.zip ..\res\raw
rm -rf ..\tmp   

我遵循了一些教程,但我仍然无法解决这个问题。 能否请您给我编译库的建议,避免以下错误?

错误

Description Resource    Path    Location    Type
make.exe: *** [obj/local/armeabi/libpdbeatdetection.so] Error 1 Discoteque C/C++ Problem

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的代码依赖于外部.so文件,则应使用PREBUILT_SHARED_LIBRARY宏正确声明它,如下所示:

LOCAL_PATH := $(call my-dir)

#dependency
include $(CLEAR_VARS)
LOCAL_MODULE := pdnative
LOCAL_SRC_FILES := C:/PROGRAMMING/PdCore/libs/$(TARGET_ARCH_ABI)/libpdnative.so
LOCAL_EXPORT_C_INCLUDES := C:/PROGRAMMING/pd-0.45-4/src
include $(PREBUILT_SHARED_LIBRARY)

#your module
include $(CLEAR_VARS)
LOCAL_MODULE := pdbeatdetection
LOCAL_SRC_FILES := pdbeatdetection.c
LOCAL_CFLAGS := -DPD
include $(BUILD_SHARED_LIBRARY)

如果这还不足以解决您的问题,请直接致电ndk-build.cmd向我们报告错误。