我一直试图解决这个问题超过两天,但仍然没有运气。
我不知道出了什么问题,我只需要设置一个简单的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)'
这是我的根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)
在libs目录中
# 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
我将不胜感激任何帮助
答案 0 :(得分:1)
最后!!!我找到了解决方案。这是
问题在于链接库的顺序不正确。
此代码效果很好
# Link
target_link_libraries(
ecg-signal-processor
log
android
firpm_d)
第一个参数应该是需要依赖项的库。
target_link_libraries(<target> [item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)
<强> OFFTOPIC 强>
接下来的问题是所有的C / C ++,你们有没有遇到过这样的问题?我想,你有!
CMake Developers
实现检查算法以避免此类问题真的很难吗?
对不起,那些你疯了的人......花费你的大部分时间来链接,制作,编译而不是编写程序