android - 编译.c库Eclipse for Android错误

标签 android c eclipse android-ndk android-library

我正在使用 Eclipse for Windows、Android SDK 和 Android NDK(我确信所有路径都设置正确)。

我正在寻找在 jni 文件夹中编译 .c 库的位置,但发生了一些错误。该库依赖于外部 .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

谢谢!

最佳答案

如果您的代码依赖于外部 .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 向我们提供报告的错误。

关于android - 编译.c库Eclipse for Android错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463814/

相关文章:

android - 我不能在 kotlin 中使用 DataBindingUtil.setContentView()

eclipse - 没有分类的 eclipse -Genymotion

java - 启动服务的切换按钮

Android Studio : Error: Activity not started, 未知错误代码 5

android - Smartwatch 3 (SWR50) 是否有 NFC API

java - 如何在 Android Studio 中对自定义数组列表中的日期进行排序?

c - GCC 的 -Wmaybe-uninitialized 是否为基于枚举的 switch 语句生成带有 -O1 的虚假警告?

c - 导致 SIGTRAP 的自由函数

c - 访问动态分配数组的越界元素/w/o SegFault

java - 用于显示 Java 项目之间完整调用层次结构的 Eclipse 插件