搞了一整天,求助:error: undefined reference to `vtable for 类名'

加盾男爵 加盾男爵 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题的出自Q_OBJECT
PS:一下情况vs2015/Ming Qt5.10均会出现

第一步,启动QtCreator后,新建->项目(Applicaton)基类选择QDialog,然后对代码不做任何改动,直接编译,提示错误
error: undefined reference to `vtable for 类名'
然后注释掉Q_OBJECT宏,编译通过,运行OK

第二步,在这个自定义的QDialog上添加一个按钮,然后有代码

connect(cancel_PushButton,SIGNAL(clicked()),this,SOT(close()));

编译通过,运行程序后,点击按钮,程序关闭
这里的问题是该类的Q_OBJECT宏处于被注释掉的状态,但却可以正常使用信号与槽

第三步,在上面的自定义QDialog上再添加一个按钮,同时添加一个一个自定义槽,代码类似

connect(tk_PushButton,SIGNAL(clicked()),this,SLOT(testPro()));

编译时提示“没有槽testPro()”,鼠标点 tk_PushButtn没有反应(testPro()函数里面有qDebug()的输出)
原因是Q_OBJECT宏被注释,但是上面的关闭按钮任然可用。。。。

第四步 取消掉Q_OBJECT的注释,然后编译,失败,提示
error: undefined reference to `vtable for 类名'

然后百度了相关关键字(至某人),解决这类的问题的方法只有一个,删掉MOC文件,重新make,然后编译,但我试了删除所有除了源代码外的文件,重新编译,也尝试过在命令行使用
qmake -project
qmake testPro
mingw32-make
单结果是一样的,都编译失败,提示
error: undefined reference to `vtable for 类名'

今天一整天都没能解决这个问题,求帮助
...全文

相关推荐

VisualGDB 6.0 R2功能解析[项目源码]

VisualGDB 6.0 R2是一款强大的跨平台开发工具,专为Visual Studio设计,简化了嵌入式系统和Linux应用程序的开发流程。它支持多种平台,包括C/C++ Linux应用程序、本机Android应用程序和库、Raspberry Pi等Linux板以及ESP32和Arduino目标。VisualGDB自动安装和配置必要的工具链,如嵌入式工具链、交叉编译器和GDB存根软件,使开发者能够专注于产品开发而非工具配置。此外,它还提供了高级构建输出窗口、CMake集成、自动错误故障排除、单元测试支持、高级IntelliSense、快速项目构建、Linux分析和强大的调试体验等功能,显著提升了开发效率和体验。

o1p2q3r

【Qt】报错error: undefined reference to `vtable for的解决方法

1、问题描述 编译Qt程序时,在某个类构造函数定义处报错: error: undefined reference to `vtable for 2、原因分析 导致错误信息的原因是:子类没有实现父类的纯虚函数; 在Qt中,首先要想到的是在一个类中添加了新的继承QObject,并添加了 Q_OBJECT 宏,然后执行构造或重新构造,都会造成这个错误。 根本原因是,只执行构造或重新构造,都不会编译新添...

郭老二

【Qt】error: undefined reference to `vtable for MainWindow‘

1、问题描述 在写一个demo时,想尽量简单,就把MainWindow类的定义和实现都写在main.cpp中,结果编译时报错: main.cpp:-1: error: undefined reference to `vtable for MainWindow' :-1: error: collect2.exe: error: ld returned 1 exit status 2、原因分析 错误信息vtable 表示子类没有把父类的纯虚函数全部重新实现。 一般我们会把MainWindow的定义和实现分别写

郭老二

SortFilterProxyModel:一个很好展示的QML QSortFilterProxyModel

SortFilterProxyModel:一个很好展示的QML QSortFilterProxyModel

Compass宁

具有PWM控制VSC-HVDC链路的IEEE30总线传输系统(Simulink仿真实现)

内容概要:本文构建了一个包含PWM控制VSC-HVDC链路的IEEE30节点电力传输系统,并基于Simulink平台完成了系统的建模仿真。该模型聚焦于高压直流输电(HVDC)技术在区域电网互联中的应用,采用电压源型换流器(VSC)与脉宽调制(PWM)技术实现高效、灵活的电能传输。研究重点在于分析VSC-HVDC链路在复杂多节点电网中对潮流分布、系统稳定性及电能质量的调控能力,特别关注其在区域电网互联、新能源大规模接入以及跨区域电力交换等场景下的动态响应特性与控制性能,为现代智能电网的发展提供技术支撑与仿真验证手段。; 适合人群:具备电力系统、电气工程或自动化等相关专业背景的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究VSC-HVDC在多节点电网(如IEEE30节点)中的建模与仿真方法;②分析PWM控制策略下HVDC链路对电网潮流分布、电压稳定性和故障穿越能力的影响;③为区域电网互联、新能源并网及智能电网调度等课题提供仿真基础和技术验证。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者在掌握电力电子技术和电力系统分析基础知识的前提下,结合仿真模型深入理解VSC-HVDC的工作原理与控制策略。在学习过程中,应着重关注模型参数设置、控制环路设计及仿真结果的分析,以达到理论与实践相结合的目的。

woshilaiwade
评论 31
收藏 已收藏
分享
返回顶部
加盾男爵
Qt 21,503 成员 26,693 内容