编译报错
错误信息:

[build] /usr/bin/ld: core/framework/exception-server/CMakeFiles/ExceptionServer.dir/src/handler_manager.cpp.o: in function `exception::MetricMsgHandler::MetricMsgHandler()':
[build] handler_manager.cpp:(.text._ZN9exception16MetricMsgHandlerC2Ev[_ZN9exception16MetricMsgHandlerC5Ev]+0x1f): undefined reference to `vtable for exception::MetricMsgHandler'
[build] /usr/bin/ld: core/framework/exception-server/CMakeFiles/ExceptionServer.dir/src/handler_manager.cpp.o: in function `exception::ExceptionMsgHandler::ExceptionMsgHandler()':
[build] handler_manager.cpp:(.text._ZN9exception19ExceptionMsgHandlerC2Ev[_ZN9exception19ExceptionMsgHandlerC5Ev]+0x1f): undefined reference to `vtable for exception::ExceptionMsgHandler' 原因分析
未定义的 MetricMsgHandler 类的虚函数表的引用,找不到 MetricMsgHandler 类的虚函数表:
- 找不到类 MetricMsgHandler;
- 类 MetricMsgHandler 的有些虚函数(包括析构函数)未实现。
解决方案
- 类 MetricMsgHandler 是否在makefile搜索的路径内,Makefile或者CMakeLists.txt中是否包含类yyy的文件路径。
- 类 MetricMsgHandler 是否实现了全部虚函数,检查本类,检查是否实现了父类的所有虚函数。
CMakeLists.txt 中包含路径拼写错误:
cmake
AUX_SOURCE_DIRECTORY(src/topicHandle SRC_LIST) 改为:
cmake
AUX_SOURCE_DIRECTORY(src/topicHandler SRC_LIST)