《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打包命令报错

windeployqt --release --qmldir "$(MSBuildProjectDirectory)" "$(TargetPath)" --dir "$(SolutionDir)$(Platform)\$(Configuration)"

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

在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 05:50:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 05:50:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 05:50:02       82 阅读
  4. Python语言-面向对象

    2024-06-08 05:50:02       91 阅读

热门阅读

  1. 【Vue】自定义指令

    2024-06-08 05:50:02       28 阅读
  2. nginx-变量

    2024-06-08 05:50:02       28 阅读
  3. GPT-4o能力评价与个人感受

    2024-06-08 05:50:02       41 阅读
  4. Flutter 中的 TableCell 小部件:全面指南

    2024-06-08 05:50:02       31 阅读
  5. Python | R 潜在混合模型

    2024-06-08 05:50:02       29 阅读
  6. HTML label 标签的作用和应用场景

    2024-06-08 05:50:02       24 阅读
  7. docker 启动

    2024-06-08 05:50:02       32 阅读
  8. STM32F103借助ESP8266连接网络

    2024-06-08 05:50:02       28 阅读