我正在尝试在 Android 上使用 fftw3 库,并启用浮点精度。
我已经编译了 fftw3 源代码,正如这个问题中所解释的那样。 我添加了这里提到的“--enable-float” 。 所以我创建了 fftw 库并将它们放入另一个 Android 项目中。我集成了它们,以便我可以使用该库。当我使用 fftw 的双重方法时,一切正常。但:
我尝试使用 fftw 的 float 方法,但如果我尝试这样做,我会收到以下错误:
Install : libfftw3.so => libs/armeabi/libfftw3.so
Compile thumb : hello-jni <= hello-jni.c
jni/hello-jni.c: In function 'dst_test':
jni/hello-jni.c:85:15: warning: assignment from incompatible pointer type [enabled by default]
SharedLibrary : libhello-jni.so
/opt/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/hello-jni/hello-jni.o: in function dst_test:jni/hello-jni.c:85: error: undefined reference to 'fftwf_plan_r2r_1d'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libhello-jni.so] Error 1
我的猜测是,当我集成库时,我做错了。我做了一个
#include "api/fftw3.h"
在我的 c 文件中。
我的 Android.mk 看起来像这样:
LOCAL_PATH := $(call my-dir)
# Prebuilt FFTW library
include $(CLEAR_VARS)
LOCAL_MODULE := fftw3
LOCAL_SRC_FILES := libfftw3.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES += hello-jni.c
LOCAL_SHARED_LIBRARIES := fftw3
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
互联网上有一些 fftw + android 教程,但我找不到任何关于集成它的“浮动版本”的信息。