我正在为 android 开发 ffmpeg。我已经成功编译 ffmpeg-2.0.1 之后,我在 NDK 的 sources/ffmpeg-2.0.1/android/arm 中将 Android.mk 文件设为
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= libavcodec
LOCAL_SRC_FILES:= lib/libavcodec-55.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
之后制作android项目,android项目中的Android.mk文件如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tutorial01
LOCAL_SRC_FILES := tutorial01.c
LOCAL_LDLIBS := -llog -ljnigraphics -lz
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil
include $(BUILD_SHARED_LIBRARY)
$(call import-module,ffmpeg-2.0.1/android/arm)
但显示有问题
*** Android NDK: Aborting . Stop.
android-ffmpeg-tutorial01line 45, external location:
/home/tech/Documents/roman10/ndk/android-ndk-r9c/build/core/prebuilt-library.mk
C/C++ Problem
我的NDK是android-ndk-r9c,系统是ubuntu-13.04,请大家指导一下。
提前致谢。
最佳答案
见 Android.mk structure
首先。
需要像这样更改 Android.mk
文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ffmpeg
LOCAL_SRC_FILES := libs/ffmpeg.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := final_ffmpeg
LOCAL_SRC_FILES := ffmpeg.cpp
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
LOCAL_PREBUILTS := libs/ffmpeg.so
#libavformat libavcodec libswscale libavutil
include $(BUILD_SHARED_LIBRARY)
p/s:
当像这样将数据放在一起时,我也会遇到 Android NDK : Aborting
问题:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= ffmpeg
LOCAL_SRC_FILES:= libs/ffmpeg.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := ffmpeg
LOCAL_SRC_FILES := ffmpeg.cpp
LOCAL_SHARED_LIBRARIES := ffmpeg
include $(BUILD_SHARED_LIBRARY)
此问题发生在 LOCAL_MODULE
名称重复时。
结果会帮助你:
它仍然是您需要的时候 call the C++ function in C++ file from Java file .
关于安卓 NDK : Aborting stop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22526992/