私はこの問題を2日以上解決しようとしていますが、まだ運がありません。エラー:関数への未定義の参照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)'
を取得していますが、私のルート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
私は任意のヘルプFINALLY
あなたは明らかに 'firpm'シンボルを定義するものをリンクしていません。 *または*あなたが間違った順序で物事をリンクしているので、それを提供するobjctファイルやライブラリの前にリンカがシンボルを見ないようにします(リンクの順序は問題ありません)。 –
@JesperJuhl、ご意見ありがとうございます。私はfirpmヘッダーファイルとADD_SUBLIBマクロを使用してソースファイルを含めています。この関数はpm.hファイルにあります。 – bxfvgekd
ヘッダーはここでは関係ありません。重要なのは、関数*と*を実装するファイル*であり、リンク線上でファイルを使用するファイルに対して相対的に発生する*。ファイル* *を使用する* *(一般的に)ファイル*の前に*記号*を記述する必要があります。 –