Skip to content

编译报错

错误信息:

image.png

[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 类的虚函数表:

  1. 找不到类 MetricMsgHandler;
  2. 类 MetricMsgHandler 的有些虚函数(包括析构函数)未实现。

解决方案

  1. 类 MetricMsgHandler 是否在makefile搜索的路径内,Makefile或者CMakeLists.txt中是否包含类yyy的文件路径。
  2. 类 MetricMsgHandler 是否实现了全部虚函数,检查本类,检查是否实现了父类的所有虚函数。

CMakeLists.txt 中包含路径拼写错误:

cmake
AUX_SOURCE_DIRECTORY(src/topicHandle SRC_LIST)

改为:

cmake
AUX_SOURCE_DIRECTORY(src/topicHandler SRC_LIST)

基于 VitePress 构建