1

私は Android 用のピッチ補正ソフトウェアに取り組んでおり、NDK を使用して Android で fftw3 を動作させたいと考えています。

ピッチ補正ライブラリ (talentedhack、http: //code.google.com/p/talentledhack/) は fftw3 に依存しているため、fftw3 をスタティック ライブラリとしてコンパイルし、それを Talentedhack 共有にリンクしようとしています。図書館。現在、静的ライブラリ libfftw3.a として fftw3 をビルドしていますが、このような未解決の参照エラーが引き続き発生します。

bin/ndk/local/armeabi/objs/talentedhack/fft.o: In function `fft_inverse':
jni/talentedhack/fft.c:51: undefined reference to `fftwf_execute'

ndk-build を使用して Talenthack 共有ライブラリをコンパイルするとき。ただし、ファイルを正しく取得しているように見えますが、これは不可解です。

Android.mk ファイルの関連部分は次のようになります。

LOCAL_MODULE := talentedhack
LOCAL_CFLAGS := -std=c99
LOCAL_SRC_FILES := talentedhack.c other_source_files.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/fftw3/api
LOCAL_STATIC_LIBRARIES := fftw3
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

プロジェクトの最上位レベルから ndk-build が呼び出されたときに失敗するコマンドは次のとおりです。

/opt/android-ndk-linux/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc -nostdlib -Wl,-soname,libtalentedhack.so -Wl,-shared,-Bsymbolic /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/circular_buffer.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/fft.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/formant_corrector.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/lfo.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_detector.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_shifter.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_smoother.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/quantizer.o /path/to/project/ndk/local/armeabi/objs/talentedhack/talentedhack.o -Wl,--whole-archive -Wl,--no-whole-archive /path/to/project/bin/ndk/local/armeabi/libfftw3.a /opt/android-ndk-linux/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/libgcc.a /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libc.so /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libstdc++.so /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libm.so -Wl,--no-undefined -Wl,-z,noexecstack -L/opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib -llog -Wl,-rpath-link=/opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib -o /path/to/project/bin/ndk/local/armeabi/libtalentedhack.so

システムには実際にはfftwf_executeまたはいくつかの派手なマクロを使用しているため、または静的ライブラリを正しく処理していない Android NDK ビルドシステムの問題である場合、任意のヘッダーで定義された他の関数 (私が知ることができます)。どんな助けでも大歓迎です。

4

0 に答える 0