I have been trying to solve this issue for more than two days, but still no luck.
I have no idea what is wrong, I need just to set up a simple NDK project, but it has already taken a tremendous amount of time.
The problem is that I am getting
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)'
Here is my root CMakeLists
# 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)
And in the libs directory
# 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")
It starts to compile the project, however ends up with the error.
What can cause this error, I have no idea what to try else.
Here is source code, so you can see it all structured. https://github.com/DurianOdour/EcgProcessor
I would be grateful for any help
firpmsymbol. Or you are linking things in incorrect order, so the symbol is not seen by the linker before the objct file or library that provides it (yes, link order matters).file(GLOB_RECURSE sublib_sources "${sublib_path}/src/*.${source_ext}")