System Setup :
OS: Windows 10 QT version: 5.14.1 QT MinGW version : mingw73_64 CMake version : 3.22 MSVC verison : 2019 (14.29.30133) Tensorflow verison : latest master(https://github.com/tensorflow/tensorflow/commit/7a896053528d69c46ec076a6602b7d693ca5108d) Bazel version: 5.0.0
How I compiled tflite dll and lib:
- clone TensorFlow repo
- install bazel and set environment variables for BAZEL_VC
- compile using command
bazel build --cxxopt=--std=c++14 -c opt //tensorflow/lite:tensorflowlite --verbose_failures
- genarated 3 files
tensorflowlite.dll, tensorflowlite.dll.if.lib, flatbuffers.lib
- link this file in my .pro file as follows.
LIBS += -L$$MSVC_PATH/lib \
-L"E:/MergingSpace/GCSObjectDetection/tensorflow/bazel-bin/tensorflow/lite/tensorflowlite.dll" \
-L"E:/MergingSpace/GCSObjectDetection/tensorflow/bazel-bin/tensorflow/lite/tensorflowlite.dll.if.lib" \
-L"E:/MergingSpace/GCSObjectDetection/tensorflow/bazel-bin/external/flatbuffers/src/flatbuffers.lib" \
INCLUDEPATH += $$PWD/include \
$$PWD/include/tensorflow \
$$PWD/tensorflow \
$$PWD/tensorflow/lite \
$$PWD/tensorflow/tensorflow/lite/core \
$$PWD/tensorflow/third_party/fft2d \
$$PWD/tensorflow/tensorflow/core/platform \
$$PWD/tensorflow/tensorflow/core/util \
$$PWD/tensorflow/bazel-tensorflow/external/flatbuffers/include
Problem facing:
- same code is compiled with Android and Linux and it is working good. but while compiling for windows its showing me the following errors.
main.o:main.cpp:(.text$_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED1Ev[_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED1Ev]+0x199): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
main.o:main.cpp:(.text$_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED1Ev[_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED1Ev]+0x1ba): undefined reference to `tflite::Interpreter::~Interpreter()'
main.o:main.cpp:(.text$_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED0Ev[_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED0Ev]+0x199): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
main.o:main.cpp:(.text$_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED0Ev[_ZN11QQmlPrivate11QQmlElementI18ObjectsRecogFilterED0Ev]+0x1ba): undefined reference to `tflite::Interpreter::~Interpreter()'
main.o:main.cpp:(.rdata$.refptr._ZTVN6tflite17MutableOpResolverE[.refptr._ZTVN6tflite17MutableOpResolverE]+0x0): undefined reference to `vtable for tflite::MutableOpResolver'
objectsrecogfilter.o:objectsrecogfilter.cpp:(.text$_ZN14TensorflowLiteD1Ev[_ZN14TensorflowLiteD1Ev]+0x112): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
objectsrecogfilter.o:objectsrecogfilter.cpp:(.text$_ZN14TensorflowLiteD1Ev[_ZN14TensorflowLiteD1Ev]+0x130): undefined reference to `tflite::Interpreter::~Interpreter()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x65c): undefined reference to `tflite::Interpreter::Invoke()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0xa0a): undefined reference to `tflite::ops::builtin::BuiltinOpResolver::BuiltinOpResolver()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0xa7d): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x190d): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x192c): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x1a01): undefined reference to `tflite::InterpreterBuilder::InterpreterBuilder(tflite::FlatBufferModel const&, tflite::OpResolver const&, tflite::InterpreterOptions const*)'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x1a14): undefined reference to `tflite::InterpreterBuilder::operator()(std::unique_ptr<tflite::Interpreter, std::default_delete<tflite::Interpreter> >*)'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x1a3b): undefined reference to `tflite::Interpreter::SetNumThreads(int)'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x1c28): undefined reference to `tflite::Interpreter::AllocateTensors()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x1e21): undefined reference to `tflite::FlatBufferModel::BuildFromFile(char const*, tflite::ErrorReporter*)'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x22f2): undefined reference to `tflite::InterpreterBuilder::~InterpreterBuilder()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x2437): undefined reference to `tflite::InterpreterBuilder::~InterpreterBuilder()'
tensorflowlite.o:tensorflowlite.cpp:(.text+0x272d): undefined reference to `tflite::InterpreterBuilder::~InterpreterBuilder()'
tensorflowlite.o:tensorflowlite.cpp:(.text.unlikely+0xe): undefined reference to `tflite::Interpreter::~Interpreter()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x54): undefined reference to `tflite::DefaultErrorReporter()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x6f): undefined reference to `tflite::Interpreter::Interpreter(tflite::ErrorReporter*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x8c): undefined reference to `tflite::Interpreter::AddTensors(int, int*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x9c): undefined reference to `tflite::Interpreter::AddTensors(int, int*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x103): undefined reference to `tflite::Interpreter::SetInputs(std::vector<int, std::allocator<int> >)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x170): undefined reference to `tflite::Interpreter::SetOutputs(std::vector<int, std::allocator<int> >)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x1fc): undefined reference to `tflite::Interpreter::SetTensorParametersReadWrite(int, TfLiteType, char const*, unsigned long long, int const*, TfLiteQuantizationParams, bool, unsigned long long, int const*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x262): undefined reference to `tflite::Interpreter::SetTensorParametersReadWrite(int, TfLiteType, char const*, unsigned long long, int const*, TfLiteQuantizationParams, bool, unsigned long long, int const*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x2f3): undefined reference to `tflite::Interpreter::SetTensorParametersReadWrite(int, TfLiteType, char const*, unsigned long long, int const*, TfLiteQuantizationParams, bool, unsigned long long, int const*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x303): undefined reference to `tflite::ops::builtin::BuiltinOpResolver::BuiltinOpResolver()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x316): undefined reference to `tflite::MutableOpResolver::FindOp(tflite::BuiltinOperator, int) const'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x31e): undefined reference to `tflite::Interpreter::AllocateTensors()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x3b8): undefined reference to `tflite::Interpreter::Invoke()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIfEvPT_PKhiiiiiib[_Z17formatImageTFLiteIfEvPT_PKhiiiiiib]+0x4e9): undefined reference to `tflite::Interpreter::~Interpreter()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x54): undefined reference to `tflite::DefaultErrorReporter()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x6f): undefined reference to `tflite::Interpreter::Interpreter(tflite::ErrorReporter*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x8c): undefined reference to `tflite::Interpreter::AddTensors(int, int*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x9c): undefined reference to `tflite::Interpreter::AddTensors(int, int*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x103): undefined reference to `tflite::Interpreter::SetInputs(std::vector<int, std::allocator<int> >)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x170): undefined reference to `tflite::Interpreter::SetOutputs(std::vector<int, std::allocator<int> >)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x1fc): undefined reference to `tflite::Interpreter::SetTensorParametersReadWrite(int, TfLiteType, char const*, unsigned long long, int const*, TfLiteQuantizationParams, bool, unsigned long long, int const*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x262): undefined reference to `tflite::Interpreter::SetTensorParametersReadWrite(int, TfLiteType, char const*, unsigned long long, int const*, TfLiteQuantizationParams, bool, unsigned long long, int const*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x2f3): undefined reference to `tflite::Interpreter::SetTensorParametersReadWrite(int, TfLiteType, char const*, unsigned long long, int const*, TfLiteQuantizationParams, bool, unsigned long long, int const*)'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x303): undefined reference to `tflite::ops::builtin::BuiltinOpResolver::BuiltinOpResolver()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x316): undefined reference to `tflite::MutableOpResolver::FindOp(tflite::BuiltinOperator, int) const'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x31e): undefined reference to `tflite::Interpreter::AllocateTensors()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x3b8): undefined reference to `tflite::Interpreter::Invoke()'
tensorflowlite.o:tensorflowlite.cpp:(.text$_Z17formatImageTFLiteIhEvPT_PKhiiiiiib[_Z17formatImageTFLiteIhEvPT_PKhiiiiiib]+0x4cd): undefined reference to `tflite::Interpreter::~Interpreter()'
tensorflowlite.o:tensorflowlite.cpp:(.rdata$_ZTVN6tflite3ops7builtin17BuiltinOpResolverE[_ZTVN6tflite3ops7builtin17BuiltinOpResolverE]+0x10): undefined reference to `tflite::MutableOpResolver::FindOp(tflite::BuiltinOperator, int) const'
tensorflowlite.o:tensorflowlite.cpp:(.rdata$_ZTVN6tflite3ops7builtin17BuiltinOpResolverE[_ZTVN6tflite3ops7builtin17BuiltinOpResolverE]+0x18): undefined reference to `tflite::MutableOpResolver::FindOp(char const*, int) const'
tensorflowlite.o:tensorflowlite.cpp:(.rdata$_ZTVN6tflite3ops7builtin17BuiltinOpResolverE[_ZTVN6tflite3ops7builtin17BuiltinOpResolverE]+0x40): undefined reference to `tflite::MutableOpResolver::MayContainUserDefinedOps() const'
tensorflowlite.o:tensorflowlite.cpp:(.rdata$.refptr._ZTVN6tflite14StderrReporterE[.refptr._ZTVN6tflite14StderrReporterE]+0x0): undefined reference to `vtable for tflite::StderrReporter'
moc_objectsrecogfilter.o:moc_objectsrecogfilter.cpp:(.text$_ZN18ObjectsRecogFilterD1Ev[_ZN18ObjectsRecogFilterD1Ev]+0x184): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
moc_objectsrecogfilter.o:moc_objectsrecogfilter.cpp:(.text$_ZN18ObjectsRecogFilterD1Ev[_ZN18ObjectsRecogFilterD1Ev]+0x1a5): undefined reference to `tflite::Interpreter::~Interpreter()'
moc_objectsrecogfilter.o:moc_objectsrecogfilter.cpp:(.text$_ZN18ObjectsRecogFilterD0Ev[_ZN18ObjectsRecogFilterD0Ev]+0x184): undefined reference to `tflite::FlatBufferModel::~FlatBufferModel()'
moc_objectsrecogfilter.o:moc_objectsrecogfilter.cpp:(.text$_ZN18ObjectsRecogFilterD0Ev[_ZN18ObjectsRecogFilterD0Ev]+0x1a5): undefined reference to `tflite::Interpreter::~Interpreter()'
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [Makefile:112: TensorFlowLiteQtVPlay.exe] Error 1
15:10:02: The process "C:\Qt\Qt5.14\Tools\mingw730_64\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project TensorFlowLiteQtVPlay (kit: Desktop Qt 5.14.1 MinGW 64-bit)
The kit Desktop Qt 5.14.1 MinGW 64-bit has configuration issues which might be the root cause for this problem.
When executing step "Make"
15:10:02: Elapsed time: 00:04.