2014-06-09 3 views
1

SoundTouch 라이브러리의 NDK_Build 중에 실패한 Android NDK 프로젝트가 있습니다.Android ndk에서 SoundTouch 라이브러리 오류를 컴파일합니다.

빌드 로그

[email protected]:~/warspace/AudioAnalyzerLib/jni$ /home/izzy/warspace/adt-bundle-linux-x86-20140321/ndk/ndk-build 
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 8 in /home/izzy/warspace/AudioAnalyzerLib/AndroidManifest.xml  
Android NDK: WARNING: Ignoring invalid values in LOCAL_CPP_FEATURES definition in /home/izzy/warspace/AudioAnalyzerLib/jni/Android.mk: -fno-exceptions  
[armeabi] Compile++ thumb: SoundTouch <= AAFilter.cpp 
[armeabi] Compile++ thumb: SoundTouch <= BPMDetect.cpp 
[armeabi] Compile++ thumb: SoundTouch <= cpu_detect_x86.cpp 
[armeabi] Compile++ thumb: SoundTouch <= FIFOSampleBuffer.cpp 
[armeabi] Compile++ thumb: SoundTouch <= FIRFilter.cpp 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/FIRFilter.cpp: In static member function 'static soundtouch::FIRFilter* soundtouch::FIRFilter::newInstance()': 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/FIRFilter.cpp:294:10: warning: variable 'uExtensions' set but not used [-Wunused-but-set-variable] 
[armeabi] Compile++ thumb: SoundTouch <= mmx_optimized.cpp 
[armeabi] Compile++ thumb: SoundTouch <= PeakFinder.cpp 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/PeakFinder.cpp: In member function 'int soundtouch::PeakFinder::findCrossingLevel(float const*, float, int, int) const': 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/PeakFinder.cpp:146:11: warning: variable 'peaklevel' set but not used [-Wunused-but-set-variable] 
[armeabi] Compile++ thumb: SoundTouch <= RateTransposer.cpp 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/RateTransposer.cpp: In member function 'void soundtouch::RateTransposer::processSamples(const SAMPLETYPE*, uint)': 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/RateTransposer.cpp:133:10: warning: variable 'count' set but not used [-Wunused-but-set-variable] 
[armeabi] Compile++ thumb: SoundTouch <= SoundTouch.cpp 
[armeabi] Compile++ thumb: SoundTouch <= sse_optimized.cpp 
[armeabi] Compile++ thumb: SoundTouch <= TDStretch.cpp 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/TDStretch.cpp: In static member function 'static soundtouch::TDStretch* soundtouch::TDStretch::newInstance()': 
/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/TDStretch.cpp:627:10: warning: variable 'uExtensions' set but not used [-Wunused-but-set-variable] 
[armeabi] SharedLibrary : libSoundTouch.so 
/home/izzy/warspace/adt-bundle-linux-x86-20140321/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/izzy/warspace/AudioAnalyzerLib/obj/local/armeabi/objs/SoundTouch/SoundTouch/RateTransposer.o: in function soundtouch::TransposerBase::newInstance():/home/izzy/warspace/AudioAnalyzerLib/jni/SoundTouch/RateTransposer.cpp:284: error: undefined reference to 'soundtouch::InterpolateLinearInteger::InterpolateLinearInteger()' 
collect2: ld returned 1 exit status 
make: *** [/home/izzy/warspace/AudioAnalyzerLib/obj/local/armeabi/libSoundTouch.so] Error 1 

나는 그것이 정의되지 않은 참조 오류가 있습니다 알고 있지만 내가 그것을 이해하지 않습니다. RateTransposer.cpp 이것은

#ifdef SOUNDTOUCH_INTEGER_SAMPLES 
    // Notice: For integer arithmetics support only linear algorithm (due to simplest calculus) 
    return new InterpolateLinearInteger; # <<<<<________________LINE 284 
#else 

내 Android.mk 당신의 도움을

LOCAL_PATH:= $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_CPP_FEATURES += -fno-exceptions 

LOCAL_SRC_FILES := \ 
    SoundTouch/AAFilter.cpp \ 
    SoundTouch/BPMDetect.cpp \ 
    SoundTouch/cpu_detect_x86.cpp\ 
     SoundTouch/FIFOSampleBuffer.cpp \ 
     SoundTouch/FIRFilter.cpp \ 
     SoundTouch/mmx_optimized.cpp \ 
     SoundTouch/PeakFinder.cpp \ 
     SoundTouch/RateTransposer.cpp \ 
     SoundTouch/SoundTouch.cpp \ 
     SoundTouch/sse_optimized.cpp \ 
     SoundTouch/TDStretch.cpp 

LOCAL_MODULE := libSoundTouch 

LOCAL_C_INCLUDES := include/ #include/BPMDetect.h include/FIFOSampleBuffer.h include/FIFOSamplePipe.h include/SoundTouch.h include/STTypes.h 

LOCAL_CFLAGS += -Wall -fvisibility=hidden -I include -D ST_NO_EXCEPTION_HANDLING -fdata-sections -ffunction-sections -marm 

include $(BUILD_SHARED_LIBRARY) 

감사 파일 실패 코드입니다

#include "InterpolateLinear.h" 

InterpolateLinear.h을 포함 조

답변

2

나는 이것을 알아 냈다.

난 그냥 RateTransposer.cpp 전에 내 Android.mk 파일에 'SoundTouch/InterpolateLinear.cpp \'을 추가 ...

+1

나는 또한'../../SoundTouch/InterpolateCubic.cpp를 추가 끝날했다 '및'../../ SoundTouch/InterpolateShannon.cpp'도 포함되지만 올바른 방향으로 나를 가르쳐 주셔서 감사합니다! – trippedout

관련 문제