提问人:terdev 提问时间:11/2/2023 最后编辑:terdev 更新时间:11/12/2023 访问量:36
将 FFTW3 库链接到原生 Android Studio 项目
Linking FFTW3 library to native Android Studio project
问:
我想将我从源代码构建的静态 fftw3 库链接到我的原生 Android Studio 应用程序。因此,我包含了标头并将(Mach-O 64 位对象 arm64)添加到我的文件夹中。我将库与 CMake 链接:libfftw3.a
jniLibs/arm64-v8a/
set(VENDOR_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/arm64-v8a)
add_library(fftw STATIC IMPORTED)
set_target_properties( fftw PROPERTIES IMPORTED_LOCATION ${VENDOR_LIB_DIR}/libfftw3.a )
target_link_libraries( exec fftw )
在我的中,我添加了以下 C++ 标志:build.gradle
defaultConfig {
applicationId "com.example.demo"
minSdk 33
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
arguments "-DCMAKE_TOOLCHAIN_FILE=/Users/username/Library/Android/sdk/ndk/25.2.9519653/build/cmake/android.toolchain.cmake",
"-DANDROID_PLATFORM=33",
"-DAPP_PLATFORM=33",
"-DANDROID_ABI=arm64-v8a"
cppFlags "-L/Users/username/AndroidStudioProjects/demo/app/src/main/cpp/fftw-3.3.10/.libs/ -lfftw3 -lm "
}
}
ndk {
abiFilters 'arm64-v8a'
}
}
但是,在我的 exec 中包含库后,只要我想调用相关函数,就会收到以下错误。我知道该应用程序没有正确链接到库,但我不知道它有什么问题,因为我可以通过这种方式成功链接其他第三方库。#include "fftw-3.3.10/api/fftw3.h"
ld: error: undefined symbol: fftw_malloc
答:
0赞
terdev
11/12/2023
#1
我可以通过将 FFTW3 作为子目录来解决这个问题:
add_subdirectory(fftw-3.3.10)
include_directories(fftw-3.3.10/api)
然后将其直接链接到可执行文件,而不将其添加为静态库:
target_link_libraries( exec fftw3 )
评论