将FFTW链接到Android NDK应用程序

我目前正在编写一个类型分类应用程序作为我在计算机工程的最后一年项目.我最初在C中编写了特征提取代码(实现FFTW),现在我需要通过NDK在Android上实现它.

这是我的第一个NDK项目,所以我仍然掌握了一些东西,但我根据this guide编译了针对Android的FFTW3库.我没有做最后一步因为我认为它不适合我需要.

我的问题是,在编译步骤之后,如何使用调用它的主NDK应用程序中的库?我只是将LOCAL_STATIC_LIBRARIES设置为我刚刚编译的libfftw3.a,在Application.mk中通常做一切吗?然后我不需要像往常那样拥有任何-lfftw3链接器标志?

最佳答案
您可以使用prebuit FFTW库(无论您是如何构建它的).

或者你可以在整个项目的Android.mk makefile中构建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_FILES和LOCAL_C_INCLUDES放到单独的.mk文件中通常会更好.

您可以在NDK发行版的docs / ANDROID-MK.html文档中阅读有关Android.mk文件的更多信息.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...