QT+VS:错误:error LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

本文主要是介绍QT+VS:错误:error LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

错误:

CCMainWindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl CCMainWindow::metaObject(void)const " (?metaObject@CCMainWindow@@UEBAPEBUQMetaObject@@XZ)
1>CCMainWindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __cdecl CCMainWindow::qt_metacast(char const *)" (?qt_metacast@CCMainWindow@@UEAAPEAXPEBD@Z)
1>CCMainWindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __cdecl CCMainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CCMainWindow@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
1>D:\Qt2\QQx64\x64\Debug\QQx64.exe : fatal error LNK1120: 3 个无法解析的外部命令

本人先后在csdn上搜索了一堆解决办法,有很多都是在说如何生成 moc_**.cpp文件,但我的已经生成了,可以在moc文件夹中找到,移除关联文件再重新保存也不行。

最后,发现是多了一个双引号,VS2019竟然不报错,枉我这么信任它
在这里插入图片描述
小心VS2019,这样写没有错误提示,等你编译之后会出现跟链接相关的错误!
当你出现链接相关的错误时,又恰好用了VS2019,就看看头文件是否出错!

追加:
我又出现了一次类似这样的错误:
在这里插入图片描述
1.这一次,我吸取教训,首先检查了头文件。但是头文件并没有出错。

2.然后,我开始看 moc文件夹 中是否生成了 moc_*.cpp文件。果然发现了问题,我新写的两个类的文件并没有生成 moc_**.cpp文件,这两个类就是报错中涉及到的两个类

3.之后,我把这两个报错的头文件从项目中排除,在重新添加入项目中。编译后还是这样报错。

4.最后,我查看这两个类的头文件的属性,右键单击对应的头文件,找到属性,点进去查看。发现:
项类型是 C/C++标头,两个头文件都是这样。头文件被当成普通的C/C++编译,当然会报错,元对象系统是C++的扩展,C/C++编译是不能生成 moc_**.cpp文件的。
在这里插入图片描述
4.将项类型 设置为 Qt Meta-Object Compiler (moc),点击确定
在这里插入图片描述
元对象系统的三个基本条件:类必须继承自QObject、类声明Q_OBJECT宏(默认私有)、元对象编译器moc。
信号和槽是QT自行定义的一种通信机制,它独立于标准的 C/C++ 语言,要正确的处理信号和槽,必须借助一个称为 moc(Meta-Object Compiler),也就是“元对象编译器”。

这篇关于QT+VS:错误:error LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/307666

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错