Не удается скомпилировать API-интерфейс tenorflowlite C ++ на Android - PullRequest
0 голосов
/ 08 ноября 2018

Думаю, проблема в том, что я не включаю общую библиотеку сразу, но я не уверен.

Я получаю ошибку

error: undefined reference to 'tflite::InterpreterBuilder::operator()(std::__ndk1::unique_ptr<tflite::Interpreter, std::__ndk1::default_delete<tflite::Interpreter> >*)

Какие точки в последней строке:

std::unique_ptr<tflite::FlatBufferModel> model = tflite::FlatBufferModel::BuildFromFile(casemodel_path.c_str());
tflite::ops::builtin::BuiltinOpResolver resolver;
tflite::InterpreterBuilder builder(*model.get(), resolver);
std::unique_ptr<tflite::Interpreter> interpreter;
builder(&interpreter);

Я взял это из здесь , так как документация кажется устаревшей.

Я скомпилировал тензор потока из источника, используя NDK16b. Я следовал за этим , чтобы скомпилировать его.

Соответствующая часть моего файла cmake выглядит так:

[...]
# Flatbuffer
set(FLATB_DIR <path-to>/git/flatbuffers)
include_directories(${FLATB_DIR}/include)
include_directories(${FLATB_DIR}/grpc)

file(GLOB flatb_src "${FLATB_DIR}/src/*.cpp")
add_library(flatbuffer ${flatb_src})

add_library(libtensorflowlite SHARED IMPORTED)
set_target_properties(libtensorflowlite PROPERTIES IMPORTED_LOCATION
        <path-to>/app/src/main/jniLibs/armeabi-v7a/libtensorflowlite.so)


include_directories(<path-to>/git/tensorflow-android)
[...]
target_link_libraries(flatbuffer libtensorflowlite <tons-of-other-libraries>)

Как я уже упоминал, я думаю, проблема в том, что я неправильно включаю разделяемую библиотеку. Все, что я сделал, это создал папку (и) jniLibs/armeabi-v7a/ в src/main, куда я положил libtensorflowlite.so. Погуглить, кажется, это один из способов сделать это? Я пробовал другие способы (с sourceSets и implementation fileTree, но ничего не получалось).

У меня есть некоторые другие предварительно скомпилированные библиотеки, которые я использую просто отлично, но они статичны (в target_link_libraries я указываю прямо на их путь). Это проблема смешивания статических / разделяемых библиотек?

edit: после this я также пытался использовать ndk15c и редактировать ANDROID_NDK_API_LEVEL, но это не помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...