《QT从基础到进阶·四十一》无法解析的外部符号及生成事件加入QT打包命令报错问题

其他无法解析的外部符号:

无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl ML_AddinManger::metaObject(void)const "...

无法解析的外部符号 "public: virtual void * __cdecl ML_AddinManger::qt_metacast(char const *)" (?qt_metacast@ML_AddinManger@@UEAAPEAXPEBD@Z)...

无法解析的外部符号 "public: virtual int __cdecl ML_AddinManger::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@ML_AddinManger@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)...

无法解析的外部符号 "public: static struct QMetaObject const ML_AddinManger::staticMetaObject" (?staticMetaObject@ML_AddinManger@@2UQMetaObject@@B)

可能的原因:

(1)

在 Qt 的类中,Q_OBJECT 宏必须位于类的声明中,并且必须是类声明的第一个成员。这是因为 Q_OBJECT 宏会被 Qt 的元对象系统解释和处理,用于生成元对象代码以支持信号和槽、动态属性等特性。

第一种写法将 Q_OBJECT 宏放在类的声明之后,而没有换行。这种写法在语法上是不规范的,并且可能导致一些识别问题或者编译器无法正确识别该类为 Qt 的元对象类,进而导致无法解析外部符号的链接错误

(2)

缓存没有清理干净,先把所有代码都注释比如只剩一个构造函数看看能不能运行,如果可以逐渐把剩余的函数放开

VS生成后事件加入QT打包命令报错

cpp 复制代码
windeployqt --release --qmldir "$(MSBuildProjectDirectory)" "$(TargetPath)" --dir "$(SolutionDir)$(Platform)\$(Configuration)"

该命令的目的是在编译的时候自动把需要的QT依赖编译到release目录下,相当于编译的时候直接打包了一个release版本,如果在生成后事件报错主要是无法识别windeployqt位置,需要在环境变量的path目录下加入QT的bin目录,比如D:\QT\5.15.2\msvc2019_64\bin

相关推荐
ambition2024216 分钟前
操作系统同步:读者-写者问题与读写公平法详解(附每个 PV 操作含义)
linux·开发语言·数据结构·unix
chuan.bai3 小时前
Java RAG 实战(第 11 篇):RAG 知识工作台网页
java·开发语言·人工智能
离陌在学C#5 小时前
C# 事件(Event)详解:从概念到实战
开发语言·c#
Terra.K6 小时前
Java异常学习[特殊字符]
java·开发语言·学习
葡萄城技术团队7 小时前
InfluxDB 2\.x 深度解析:核心架构、Flux 函数与制造业落地指南(三)
java·开发语言·架构
counting money7 小时前
Java IO流详解:从InputStream到文件操作实战
java·开发语言·python
wuyk5558 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
峥无8 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
波特率1152008 小时前
C++新特性---属性说明符与标准属性
开发语言·c++
程序员小八7778 小时前
上海百度B端java后端日常实习一面
java·开发语言