2011-08-29 95 views
5

我目前正在写一个流派分类的应用在计算机工程的最后一年的项目。我最初用C编写了特征提取代码(实现FFTW),现在我需要通过NDK在Android上实现它。链接FFTW到一个Android NDK应用

这是我的第一个项目NDK,所以我仍然得到的东西挂起,但我已按照this guide编译FFTW3库为Android。我没有做最后一步,因为我不认为它适合我需要的东西。

我的问题是我怎么,编译步骤之后,使用该库在它调用主NDK应用程序?我是否正常地使用Application.mk中的所有东西,并将LOCAL_STATIC_LIBRARIES设置为刚刚编译的libfftw3.a?然后我不需要像我通常会有的任何-lfftw3链接器标志?

回答

4

您可以使用prebuit FFTW库(不管你怎么构建它)。

或者你可以在Android.mk生成文件与整个项目建设FFTW。

Android.mk内容将是:

# Prebuilt FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
include $(PREBUILT_STATIC_LIBRARY) 

# or 

# Build FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
# TODO put your static libs build flags 
include path_to_fftw_sources/$(LOCAL_MODULE).mk 
include $(BUILD_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := YourProject 
# TODO put your shared lib build flags 
include path_to_your_project/$(LOCAL_MODULE).mk 
LOCAL_STATIC_LIBRARIES += fftw 
include $(BUILD_SHARED_LIBRARY) 

我已经写path_to_fftw_sources/$(LOCAL_MODULE).mk建设FFTW静态库和path_to_your_project/$(LOCAL_MODULE).mk构建共享库。将LOCAL_SRC_FILESLOCAL_C_INCLUDES分别放入单独的.mk文件通常会更好。

你可以在你的NDK分布阅读docs/ANDROID-MK.html文件更多的Android.mk文件。