获取错误:未定义对函数 Android NDK 的引用
Getting error: undefined reference to function Android NDK
我已经尝试解决这个问题两天多了,但仍然没有运气。
我不知道出了什么问题,我只需要设置一个简单的 NDK 项目,但它已经花费了大量的时间。
问题是我得到了
error: undefined reference to 'firpm(unsigned int, std::vector<double, std::allocator<double> > const&, std::vector<double, std::allocator<double> > const&, std::vector<double, std::allocator<double> > const&, double, int)'
这是我的根CMake列表
# Cmake Minimum Version
cmake_minimum_required(VERSION 3.4.1)
project(EcgProcessing)
# Add nested cmake files
include(libs/CMakeLists.txt)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
# ECG Audio Processor library
add_library(ecg-signal-processor-demodulator SHARED
demodulator.cpp)
add_library(ecg-signal-processor-qrsdetection SHARED
qrsdetection.cpp)
# Link
target_link_libraries(
firpm_d
log
android
ecg-signal-processor-demodulator
ecg-signal-processor-qrsdetection)
在库目录中
# Cmake Minimum Version
cmake_minimum_required(VERSION 3.4.1)
set(LIBS_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Eigen/)
MACRO(ADD_SUBLIB libname source_ext)
#Compute required sources
set(sublib_path "${LIBS_DIRECTORY}/${libname}")
file(GLOB_RECURSE sublib_sources "${sublib_path}/src/*.${source_ext}")
#Create library
IF( sublib_sources )
ADD_LIBRARY(${libname} SHARED ${sublib_sources})
ENDIF()
#add this library's header folder to the global include set
INCLUDE_DIRECTORIES("${sublib_path}/include")
INCLUDE_DIRECTORIES("${sublib_path}/")
link_directories(${sublib_path})
ENDMACRO(ADD_SUBLIB)
ADD_SUBLIB(firpm_d "cpp")
ADD_SUBLIB(eigen "cpp")
它开始编译项目,但最终出现错误。
什么会导致此错误,我不知道该尝试什么。
这是源代码,所以你可以看到它都是结构化的。https://github.com/DurianOdour/EcgProcessor
我将不胜感激任何帮助
我已经找到了解决方案。在这里
Android ndk(cmake(:在第二个 jni 库中使用日志 API 时对 '__android_log_write' 的未定义引用
问题在于链接库的顺序不正确。
这段代码效果很好
# Link
target_link_libraries(
ecg-signal-processor
log
android
firpm_d)
第一个参数应该是需要依赖项的库。
target_link_libraries(<target> [item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- Android NDK 未定义对ASensorEventQueue_registerSensor的引用
- 如何将 libjpeg-turbo Android NDK 添加为静态库
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- Android NDK - 无法在 Visual Studio 2017 中调试
- 不再支持Android NDK APP_STL gnustl_shared
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 为 Android NDK 编译库
- 从文件问题加载纹理 Android NDK 和 OpenGL
- Android NDK - C++ 异常会导致第三方原生库崩溃
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- [android ndk]如何获取资产文件夹中文件的绝对路径?
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 如何在Android(NDK)中使用CPR库
- 使用 Android NDK 使用 clang++ 编译C++代码时对"_Unwind_Resume"的未定义引用
- 如何在 C/Android NDK 中将字符串日期转换为毫秒