fftw3库在Android Studio中的编译和使用

这篇具有很好参考价值的文章主要介绍了fftw3库在Android Studio中的编译和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

fftw3库是快速傅里叶变换FFT/IFFT的开源实现,可以在多个平台编译。在Android app开发项目中需要做FFT信号分析,优先使用JNI的方式,使用原生语言C/C++实现复杂的科学计算任务。fftw3可以在多个平台编译优化,也可以在Android NDK开发时进行编译调用。本文详细介绍了fftw3在Android studio中的编译和使用方法,欢迎大家留言讨论。

下载fftw3的源码

可以从fftw3的官网下载,另外这里提供了一个下载链接

https://download.csdn.net/download/cyz_2014/87863156

将ffw3文件夹复制到app->src->main->cpp路径中

fftw3库在Android Studio中的编译和使用

修改CMakeLists.txt

fftw3中的CMakeLists.txt无需修改,只需要修改外层cpp中的CMakeLists.txt

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.10.2)

# Declares and names the project.

option (ENABLE_FLOAT "single-precision" ON)

SET (ENABLE_FLOAT ON)

project("myapplication")

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

add_subdirectory(fftw3)

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             native-lib.cpp )

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

target_link_libraries(native-lib fftw3f)

上面的配置文件只添加了以下4条语句:

option (ENABLE_FLOAT "single-precision" ON)

SET (ENABLE_FLOAT ON)

add_subdirectory(fftw3)

target_link_libraries(native-lib fftw3f)

前两条语句是设置fftw3的编译选项,将其编译为单精度浮点库,生成的库的名称是libfftw3f.so

后两条语句是用于编译ffw3,并将其与native-lib链接。

编译和加载fftw3库

编译以后在app->build->intermediates->merged_native_libs->debug->out->lib中有生成的对应的so库

fftw3库在Android Studio中的编译和使用

 在MainActivity 类中加载生成的fftw3f:

static {
    System.loadLibrary("fftw3f");
    System.loadLibrary("native-lib");
}

fftw3库的使用

编写native函数文章来源地址https://www.toymoban.com/news/detail-473056.html

#include <jni.h>
#include <string>

#include <android/log.h>
#include <math.h>
#include "fftw3/api/fftw3.h"

#define TAG "Jonathan"

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__);

//以下是native函数部分
jfloat a[8] = {1, 0, 2, 0, 3, 0, 4, 0};
fftwf_complex *fftwa = reinterpret_cast<fftwf_complex *>((fftwf_complex *) a);

fftwf_plan p;
p = fftwf_plan_dft_1d(4, fftwa, fftwa, FFTW_FORWARD, FFTW_ESTIMATE);
fftwf_execute(p);
fftwf_destroy_plan(p);
LOGD("fftwa: %f + %fi, %f + %fi, %f + %fi, %f + %fi,\n", fftwa[0][0], fftwa[0][1],
         fftwa[1][0], fftwa[1][1], fftwa[2][0], fftwa[2][1], fftwa[3][0], fftwa[3][1]);

到了这里,关于fftw3库在Android Studio中的编译和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里巴巴矢量图标库在uni-app中的使用方法

    开发工具为:HBuilderX 步骤1: 先将喜欢的字体图标加入购物车中  点击购物车然后点击添加至项目  有就选择没有就新建 步骤2: 1.将项目文件下载至本地  2.打开下载到本地的项目文件,将箭头所指的四个文件放入项目的static目录下(可以新建个文件夹放入,方便管理) 3.打开i

    2024年01月20日
    浏览(38)
  • 使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片

    问题描述: 使用android studio编译app到自己的手机上运行,却读取不了手机里面的图片 问题分析: 这个是由于这个app没有申请手机端的 媒体文件访问权限,所以读取不了 解决:(我的是Android 10,新版本可能会有不同) 查看AndroidManifest.xml这个文件,发现原来只有permission.CAM

    2024年01月17日
    浏览(41)
  • 【交叉编译】编译生成 x86、arm 环境下的FFTW库

    FFTW是一个快速计算离散傅里叶变换的标准C语言程序集,可计算一维或多维实和复数据以及任意规模的DFT。下面主要介绍的是 x86 环境下 FFTW库的编译过程,arm环境下的编译过程和FFTW类似,不同之处在于需要手动指定 编译环境 和 编译器 。 FFTW有三个版本的数据类型:double、

    2024年02月06日
    浏览(59)
  • 【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤

    1、提高开发效率,让开发者所有的函数实现不用从零开始。 2、隐藏源代码。          库其实就是所有的.o文件用特定的方式进行打包形成一个文件,各个.o文件包含了源代码中的机器语言指令。 先将我们的.c文件或者是.cpp文件形成.o文件,指令为: gcc/g++ -c 要形成的.o文

    2024年04月17日
    浏览(34)
  • Android Studio Flamingo编译项目问题记录

    系统版本:macOS 13.4 Android Studio Flamingo | 2022.2.1 Patch 2 下载地址: Download Android Studio App Tools - Android Developers Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today. https://developer.android.google.cn/studio 所需插件版本:3.2-8.0,g

    2024年02月16日
    浏览(40)
  • android studio app红叉无法编译

    今天前台小姐姐穿了一个白色的超短裙,和小姐姐聊了聊人生梦想,聊生活趣事,回到工位你马....报了一个这错误,无法运行了,明天就要打包测试了,顿时菊花一紧,急了一头汗,这你马咋回事,看了旁边的产品肥仔,迷着小眼露出了银建的笑容.开始排雷.... 意思就是说gradle初始化失败

    2024年02月06日
    浏览(32)
  • PuppeteerSharp库在C#中的应用案例

    PuppeteerSharp是一个针对Google Chrome浏览器的高级API库,它允许我们使用C#来控制Chrome浏览器的,比如模拟用户行为操作、爬取网页内容等。本文将介绍如何使用PuppeteerSharp库在C#中实现下载千图网图片并保存为PDF文件的案例。 PuppeteerSharp 提供了一系列丰富的功能,包括但不限于:

    2024年02月01日
    浏览(33)
  • Android Studio 编译C/C++生成.so文件

    前期准备:下载NDK、CMake 方法一:使用AndroidStudio自动创建Native C/C++ 项目 创建新项目 创建项目后,会默认生成两个文件和相关默认配置. 若创建好C++项目后报错,则需要配置一下NDK路径 如果上图配置页面显示无法配置,则需要在local.properties中手动配置NDK。 3.点击 Build - Ma

    2024年02月16日
    浏览(42)
  • Android Studio编译旧的app代码错误及解决方法

    The option ‘android.injected.build.density’ is deprecated. It was removed in version 8.0 of the Android Gradle plugin. Density property injection from Android Studio has been removed. app/build.gradle apply plugin: ‘com.android.application’ 改成 plugins { id ‘com.android.application’ } Deprecated Gradle features were used in this build, making

    2024年02月07日
    浏览(32)
  • Qt Creator -- 详细安装教程以及配置Android编译器环境(Android studio)

    目录 前言 今天我们就讲解一下如何在 Qt Creator 中配置 Android 开发环境 一 安装 -- Android studio 1. 安装包 (1)百度网盘 (2)官网链接  2.安装教程 (1)查看引用路径 二 安装 -- Qt Creator 1. 版本选择 (1)版本自选 (2)博主版本 2. Qt Creator 安装步骤 3. Android 编译器配置 三 新建

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包