gpt4 book ai didi

android - 内置函数警告的不兼容隐式声明使用 NDK 和 LAME

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:36 27 4
gpt4 key购买 nike

我正在尝试按照位于以下位置的教程进行操作

http://developer.samsung.com/android/technical-docs/Porting-and-using-LAME-MP3-on-Android-with-JNI

要点是它允许将 LAME MP3 编码器与 JNI 一起使用。

我遵循了教程中提到的每个步骤。我的项目位于

C:\workspace\

并称为“LAME_Test”。根据教程中标记为使用 NDK 编译 的部分,我继续制作了一个名为“Android.mk”的生成文件,如本文下方所附。

我在 64 位计算机上运行 Windows 7。我确实安装了 Cygwin 和 NDK,并测试了我的设置是否适用于我正在处理的另一个项目。然而,当我去

/cygdrive/c/workspace/LAME_Test/jni

在 Cygwin 上并发出以下命令

 /cygdrive/c/Android/android-ndk-r8b/ndk-build

鉴于NDK位于

C:\Android\android-ndk-r8b

编译吐出一堆这样的警告

warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]                                                                                                   

我在这篇文章的底部附上了一小段警告(因为警告列表真的很长,可能只会增加困惑 - 而不是增加值(value))。

想知道是否有一种巧妙的方法来解决这些警告并获得漂亮、干净的编译。

P.S:我要补充一点,我能够在上面的链接 (LAME4Android) 中构建和运行示例项目。这需要编译 native 代码。因此,看起来该项目确实构建良好,尽管有所有警告。我最初认为它因警告而损坏。但是,如果有某种方法可以修复警告,那确实非常好。

Android.mk 文件内容

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libmp3lame
LOCAL_SRC_FILES := \
./libmp3lame/bitstream.c \
./libmp3lame/encoder.c \
./libmp3lame/fft.c \
./libmp3lame/gain_analysis.c \
./libmp3lame/id3tag.c \
./libmp3lame/lame.c \
./libmp3lame/mpglib_interface.c \
./libmp3lame/newmdct.c \
./libmp3lame/presets.c \
./libmp3lame/psymodel.c \
./libmp3lame/quantize.c \
./libmp3lame/quantize_pvt.c \
./libmp3lame/reservoir.c \
./libmp3lame/set_get.c \
./libmp3lame/tables.c \
./libmp3lame/takehiro.c \
./libmp3lame/util.c \
./libmp3lame/vbrquantize.c \
./libmp3lame/VbrTag.c \
./libmp3lame/version.c

LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

内置函数警告的不兼容隐式声明日志

$ /cygdrive/c/Android/android-ndk-r8b/ndk-build
Cygwin : Generating dependency file converter script
Compile thumb : mp3lame <= bitstream.c
Compile thumb : mp3lame <= encoder.c
C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c: In function 'lame_encode_frame_init':
C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c:202:9: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c: In function 'lame_encode_mp3_frame':
C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c:471:17: warning: incompatible implicit declaration of built-in function 'bcopy' [enabled by default]
Compile thumb : mp3lame <= fft.c
Compile thumb : mp3lame <= gain_analysis.c
and so on...

最佳答案

经过大量搜索,似乎在这里找到了我要找的答案

Lame MP3 Encoder compile for Android

对我来说关键是确保将以下行添加到我的 Android.mk 文件中

LOCAL_CFLAGS = -DSTDC_HEADERS

正如 James Zhang 所提到的。

我在这篇文章下面附上了完整的 makefile,所以我说的很清楚。

更新后的 Android.mk 文件的内容

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libmp3lame
LOCAL_SRC_FILES := \
./libmp3lame/bitstream.c \
./libmp3lame/encoder.c \
./libmp3lame/fft.c \
./libmp3lame/gain_analysis.c \
./libmp3lame/id3tag.c \
./libmp3lame/lame.c \
./libmp3lame/mpglib_interface.c \
./libmp3lame/newmdct.c \
./libmp3lame/presets.c \
./libmp3lame/psymodel.c \
./libmp3lame/quantize.c \
./libmp3lame/quantize_pvt.c \
./libmp3lame/reservoir.c \
./libmp3lame/set_get.c \
./libmp3lame/tables.c \
./libmp3lame/takehiro.c \
./libmp3lame/util.c \
./libmp3lame/vbrquantize.c \
./libmp3lame/VbrTag.c \
./libmp3lame/version.c

LOCAL_LDLIBS := -llog
LOCAL_CFLAGS = -DSTDC_HEADERS

include $(BUILD_SHARED_LIBRARY)

关于android - 内置函数警告的不兼容隐式声明使用 NDK 和 LAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com