在Android NDK上启用浮动的FFTW3

时间:2013-06-10 14:36:23

标签: android android-ndk fftw

我正在尝试在Android上使用fftw3库,并启用了浮点精度。

我已经编译了fftw3源代码,因为它被解释为in this question. 我按照here.添加了“--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-File中。

我的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教程,但我找不到任何关于整合它的“浮动版”的内容。

1 个答案:

答案 0 :(得分:0)

我实际上也遇到了FFTW3的问题,但略有不同。我认为你的问题的答案在于用浮动支撑构建包。在./configure命令中添加--enable-float应该可以解决问题。在它构建之后,你可以像包含fftw3那样包含它,只需将它设为fftw3f。

祝你好运。