Tensorflow c ++ api неопределенная ссылка на `tflite :: DefaultErrorReporter () ' - PullRequest
0 голосов
/ 11 февраля 2020

Я успешно собрал tenorflow_ cc в Ubuntu 16.04 со сборкой c.

Я тестировал небольшой код, взятый из руководства tflite:

  $> cat test1.cpp

  #include <cstdio>
  #include "tensorflow/lite/interpreter.h"
  #include "tensorflow/lite/kernels/register.h"
  #include "tensorflow/lite/model.h"

  using namespace tflite;

  int main(int argc, char* argv[]) {
  if (argc != 2) {
  fprintf(stderr, "minimal \n");
  return 1;
  }
  const char* filename = argv[1];

  std::unique_ptrtflite::FlatBufferModel model =
  tflite::FlatBufferModel::BuildFromFile(filename);
  return 0;
  }

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

  [ 50%] Building CXX object CMakeFiles/example.dir/example.cpp.o
  [100%] Linking CXX executable example
  CMakeFiles/example.dir/example.cpp.o: In function main': example.cpp:(.text+0x57):                               
  undefined reference to tflite::DefaultErrorReporter()'
  example.cpp:(.text+0x6d): undefined reference to                               
  tflite::FlatBufferModel::BuildFromFile(char const*, tflite::ErrorReporter*)'             
  CMakeFiles/example.dir/example.cpp.o: In function 
  std::default_deletetflite::FlatBufferModel::operator()(tflite::FlatBufferModel*) const':
  example.cpp 
  (.text.ZNKSt14default_deleteIN6tflite15Flat 
  BufferModelEEclEPS1[ZNKSt14default_deleteIN6tflite15FlatBufferModelEEclEPS1]+0x1e): 
  undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
  collect2: error: ld returned 1 exit status
  CMakeFiles/example.dir/build.make:85: recipe for target 'example' failed
  make[2]: *** [example] Error 1
  CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/example.dir/all' failed
  make[1]: *** [CMakeFiles/example.dir/all] Error 2
  Makefile:83: recipe for target 'all' failed
  make: *** [all] Error 2

Любые предложения о том, как действовать?

1 Ответ

1 голос
/ 12 февраля 2020

Ответ на этот вопрос https://github.com/tensorflow/tensorflow/issues/36661 По какой-то странной причине вам нужно сначала предоставить объектный файл, а не библиотеку tflite, вашему компоновщику.

FYI https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking

...