【问题标题】:Incompatible Implicit Declaration of Built-In Function Warning Using NDK with LAME使用带有 LAME 的 NDK 的内置函数警告的不兼容隐式声明
【发布时间】:2012-10-29 11:28:51
【问题描述】:

我正在尝试遵循位于以下位置的教程

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

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

我按照教程中提到的每个步骤进行操作。我的项目位于

C:\workspace\

并称为“LAME_Test”。根据教程中标记为 Compilation with NDK 的部分,我继续制作了一个名为“Android.mk”的 makefile,如下所示。

我在 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]                                                                                                   

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

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

P.S:我将补充一点,我能够构建 + 运行上面链接中的示例项目 (LAME4Android)。这需要编译本机代码。因此,看起来项目确实构建得很好,尽管有所有警告。我最初认为它是由于警告而损坏的。但是,如果有一些方法可以修复警告,那确实很棒。

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

【问题讨论】:

    标签: android makefile java-native-interface mp3 lame


    【解决方案1】:

    经过大量搜索后,看起来我正在寻找的答案在这里找到了

    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)
    

    【讨论】:

    • 谢谢,你拯救了我的一天。
    猜你喜欢
    • 2010-11-01
    • 2013-12-01
    • 2018-03-17
    • 2015-03-18
    • 1970-01-01
    • 2013-02-15
    • 2013-12-28
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多