MNN-APPLICATIONS icon indicating copy to clipboard operation
MNN-APPLICATIONS copied to clipboard

undefined reference to `Revert::~Revert()'

Open HangJie720 opened this issue 6 years ago • 7 comments

when I compiled your code tf_blazeface.cpp under MNN source code, error occured.

CMakeFiles/blazeface.out.dir/tf_blazeface.cpp.o: In function `std::unique_ptr<Revert, std::default_delete<Revert> >::~unique_ptr()':
tf_blazeface.cpp:(.text._ZNSt10unique_ptrI6RevertSt14default_deleteIS0_EED2Ev[_ZNSt10unique_ptrI6RevertSt14default_deleteIS0_EED5Ev]+0x10): undefined reference to `Revert::~Revert()'
CMakeFiles/blazeface.out.dir/tf_blazeface.cpp.o: In function `main':
tf_blazeface.cpp:(.text.startup.main+0x13c): undefined reference to `Revert::Revert(char const*)'
tf_blazeface.cpp:(.text.startup.main+0x148): undefined reference to `Revert::initialize()'
tf_blazeface.cpp:(.text.startup.main+0x150): undefined reference to `Revert::getBuffer() const'
tf_blazeface.cpp:(.text.startup.main+0x15c): undefined reference to `Revert::getBufferSize() const'
tf_blazeface.cpp:(.text.startup.main+0x1ac): undefined reference to `Revert::~Revert()'
collect2: error: ld returned 1 exit status
tools/cpp/CMakeFiles/blazeface.out.dir/build.make:111: recipe for target 'blazeface.out' failed
make[2]: *** [blazeface.out] Error 1
CMakeFiles/Makefile2:1247: recipe for target 'tools/cpp/CMakeFiles/blazeface.out.dir/all' failed
make[1]: *** [tools/cpp/CMakeFiles/blazeface.out.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

HangJie720 avatar Dec 02 '19 11:12 HangJie720

when I compiled your code tf_blazeface.cpp under MNN source code, error occured.

CMakeFiles/blazeface.out.dir/tf_blazeface.cpp.o: In function `std::unique_ptr<Revert, std::default_delete<Revert> >::~unique_ptr()':
tf_blazeface.cpp:(.text._ZNSt10unique_ptrI6RevertSt14default_deleteIS0_EED2Ev[_ZNSt10unique_ptrI6RevertSt14default_deleteIS0_EED5Ev]+0x10): undefined reference to `Revert::~Revert()'
CMakeFiles/blazeface.out.dir/tf_blazeface.cpp.o: In function `main':
tf_blazeface.cpp:(.text.startup.main+0x13c): undefined reference to `Revert::Revert(char const*)'
tf_blazeface.cpp:(.text.startup.main+0x148): undefined reference to `Revert::initialize()'
tf_blazeface.cpp:(.text.startup.main+0x150): undefined reference to `Revert::getBuffer() const'
tf_blazeface.cpp:(.text.startup.main+0x15c): undefined reference to `Revert::getBufferSize() const'
tf_blazeface.cpp:(.text.startup.main+0x1ac): undefined reference to `Revert::~Revert()'
collect2: error: ld returned 1 exit status
tools/cpp/CMakeFiles/blazeface.out.dir/build.make:111: recipe for target 'blazeface.out' failed
make[2]: *** [blazeface.out] Error 1
CMakeFiles/Makefile2:1247: recipe for target 'tools/cpp/CMakeFiles/blazeface.out.dir/all' failed
make[1]: *** [tools/cpp/CMakeFiles/blazeface.out.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

This problem is solved due to head file revertMNNModel.hpp is not found. Thank you for your blazeface model, but the model accuracy is not high, result is shown as follows,

HangJie720 avatar Dec 03 '19 06:12 HangJie720

你好,我也遇到这个问题,请教一下。我程序里是可以跳到“revertMNNModel.hpp”这个头文件的,那是否代表能找到这个头文件?

CabbageWust avatar Aug 13 '20 11:08 CabbageWust

你好,我也遇到这个问题,请教一下。我程序里是可以跳到“revertMNNModel.hpp”这个头文件的,那是否代表能找到这个头文件?

CabbageWust avatar Aug 13 '20 11:08 CabbageWust

你好,我也遇到这个问题,请教一下。我程序里是可以跳到“revertMNNModel.hpp”这个头文件的,那是否代表能找到这个头文件?

CabbageWust avatar Aug 13 '20 11:08 CabbageWust

你好,我也遇到这个问题,请教一下。我程序里是可以跳到“revertMNNModel.hpp”这个头文件的,那是否代表能找到这个头文件?

你好,请问你解决这个问题了么,我程序里包含了“revertMNNModel.hpp”,但仍然无法链接到Revertor

tangchen2 avatar Nov 11 '20 05:11 tangchen2

你好,我也遇到这个问题,请教一下。我程序里是可以跳到“revertMNNModel.hpp”这个头文件的,那是否代表能找到这个头文件?

你好,请问你解决这个问题了么,我程序里包含了“revertMNNModel.hpp”,但仍然无法链接到Revertor

他的通过内存的加载方式,你可以直接通过文件名的加载方式,不用它的代码。请查看MNN手册

ZhangZhiHao233 avatar Nov 14 '20 12:11 ZhangZhiHao233

我也遇到这个问题,其实像这种undefined reference to xxx就是在链接库的时候没有找到xxx,查了一下这里的这些函数都是在revertmodel.hpp里面声明的,可能是编译的时候libMNN.so里面没有编译到这个东西,所以我单独把revertModel.cpp和revertModel.hpp拿出来编了一个revertModel.a的静态库,最后显示的加到链接里面去就可以编译通过了。 这个模型测单个人脸倒还好,多人脸效果直接拉跨。 大家可以尝试一下ultraface或者retinaface的mnn模型效果都还不错,速度我在rk3399上有17fps。

更新: 刚才看了一下,这个问题还有一个更简单的解决方法,就是在add_executable的时候,把revertModel.cpp放在 tf_blazeface.cpp后面一起编译,可以省一下编译静态库的过程。 其实这个工程里面都是用Android.mk写的编译文档。大家对比一下就可以发现里面就是把revertModel.cpp跟tf_blazeface.cpp一起编译在可执行文件里面的。 以上

Riut521 avatar Nov 27 '20 09:11 Riut521