在Ubuntu+catkin_make上qt开发时碰到以下错误:

错误提示:

undefined reference to `vtable for MainWindow'

可能原因:

(1)路径位置错误,源文件的目录结构有问题,查看CmakeLists看看目录结构是不是对的 !!!

看其他博客说目录有问题,但我一直感觉自己的目录应该没有问题,还是太相信自己了。

查CmakeLists是否位置正确

file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS  include/*.hpp *.h)

(2)查cpp文件中的头文件包含路径是否正确

(3)当然了还有一种可能就是未添加Q_OBJECT

(4)如果头文件已经包含,检查是否有 .c 或者 .cpp 文件

 (5)是不是 cpp 调用 c,如果是,需要使用extern "C"告诉编译器这部分代码按C语言(而不是C++)的方式进行编译

#ifdef __cplusplus
extern "C"{
#endif

//add your c code

#ifdef __cplusplus
}
#endif

参考自:

Linux+CLion+树莓派远程编译时,Cmake编译出现undefined reference to `vtable for MainWindow'的解决办法 - kingofloong - 博客园 (cnblogs.com)

 https://www.cnblogs.com/BANLOONG/p/11570829.html

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐