5

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

这是我的第一个 NDK 项目,所以我仍然掌握了窍门,但我已经根据本指南为 Android 编译了 FFTW3 库。我没有做最后一步,因为我认为它不适合我的需要。

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

4

1 回答 1

4

您可以使用 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_FILESLOCAL_C_INCLUDES放到单独的.mk文件中。

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

于 2012-02-04T10:25:05.570 回答