gpt4 book ai didi

c++ - Qt:跨源文件实现信号/槽后出现 LNK2001 和 LNK2019 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:28 25 4
gpt4 key购买 nike

这由我的 MainWindow 文件中的声明组成,为简洁起见,我没有包含库内容。我在这两个库和所有必需的库中都包含了 QObject.h。在包含第二个连接调用之前,它编译得很好。第一个 Ctrl-C 处理程序工作正常。

我拿出我的代码,以为我的雇主不会喜欢它。请参阅下面的相应回复!

我正在使用 QT Creator。当我用谷歌搜索这些错误消息时,提供的大多数解决方案都围绕着修复 make 命令/路径或在 Visual Studio 中编译时发生的类似问题。

我重申,这些错误仅在包含全局 GCamera 和 MainWindow 的第二次连接调用后出现。在此之前程序正在编译运行。

在此先感谢您,对于冗长的帖子,我深表歉意,并期待收到任何意见。

最佳答案

您应该有一个名为 moc_tcamera.cpp 的文件,它实现了构建目录中缺少的符号。

如果它不存在,您应该“运行 qmake”,然后“重建”您的项目(这两个操作都在 Qt Creator 构建菜单中)。

为什么会出错:

qmake 为所有包含宏 Q_OBJECTQ_GADGET 的源文件的 Makefile 添加了一个 moc(Qt 的元对象编译器)步骤,这样的文件被称为“移动”。一旦文件被检测为可移动或不可移动,该状态不会改变,直到重新运行 qmake。

QtCreator 仅在 .pro 文件更改时(例如,当您添加或删除文件时)自行运行 qmake。

这意味着您可能在文件 tcamera.h 中没有 Q_OBJECT 宏的情况下编译了项目一次,然后添加了该宏。并且由于在添加对 connect 的调用之前不需要元对象,因此 VC++ 不会尝试解析丢失的符号。

关于c++ - Qt:跨源文件实现信号/槽后出现 LNK2001 和 LNK2019 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com