내가 두 개 이상의 일이 문제를 해결하기 위해 노력 해왔다를 기능 정의되지 않은 참조를하지만.가져 오는 동안 오류가 없습니다 : 운이 여전히 안드로이드 NDK
나는 아무 생각도 잘못이 무엇인지, 내가 간단한 NDK 프로젝트를 설정하는 단지 필요가 없습니다, 그러나 이미 엄청난 시간을 촬영하고있다.
문제는 내가하지만, 내 루트 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")
에서
다음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)'
입니다 얻고 있다는 것입니다 오류로 끝납니다. 이 오류가 발생할 수 있습니다 무엇
, 나는 다른 시도 무엇인지 전혀 모른다. 당신이 모든 구조를 볼 수 있도록 여기에 는 소스 코드입니다. https://github.com/DurianOdour/EcgProcessor내가 어떤 도움 마침내
'firpm' 심볼을 정의하는 것은 무엇이든간에 링크하지 않습니다. * 또는 * 잘못된 순서로 링크하고 있으므로 링크를 제공하는 objct 파일이나 라이브러리 앞에 링커가 심볼을 표시하지 않습니다 (예, 링크 순서가 중요합니다). –
@JesperJuhl, 귀하의 의견을 주셔서 감사합니다, 전 firpm 헤더 파일뿐만 아니라 소스 파일을 ADD_SUBLIB 매크로를 사용하여 포함하고 있습니다,이 함수는 pm.h 파일에 위치하고 있습니다. – bxfvgekd
헤더가 중요하지 않습니다. 중요한 것은 파일을 사용하는 파일과 관련하여 링크 행에서 발생하는 * 및 * 함수를 구현하는 파일입니다. 기호 *를 사용하는 파일 *은 일반적으로 기호를 제공하는 * 파일 앞에 * 언급되어야합니다. –