这由MainWindow文件中的声明组成,为了简洁起见,我没有包含库包含内容。我在所有必需的库中都包含了QObject.h。在包含第二个connect调用之前,它编译良好。第一个Ctrl-C处理程序可以正常工作。I took out my code, thought my employer wouldn't like it. See the appropriate response below!
我正在使用QT Creator。当我搜索这些错误消息时,提供的大多数解决方案都围绕着修复make命令/路径或在Visual Studio中编译时发生的某种形式。
我重申,这些错误仅在包含全局GCamera和MainWindow的第二次连接调用之后才会出现。该程序在此之前已编译并运行。
预先谢谢您,冗长的帖子我深表歉意,并期待收到任何输入。
最佳答案
您应该有一个名为moc_tcamera.cpp
的文件,该文件实现了构建目录中缺少的符号。
如果不存在,则应“运行qmake”,然后“重建”项目(两个操作都在Qt Creator的Build菜单中)。
为什么发生错误:
对于所有包含宏Q_OBJECT
或Q_GADGET
的源文件,qmake都会在Makefile中添加一个moc(Qt的元对象编译器)步骤,该文件被称为“可移动的”。一旦检测到文件可移动或不可移动,则在重新运行qmake之前,该状态不会更改。
QtCreator仅在.pro文件更改时(例如,在添加或删除文件时)自行运行qmake。
这意味着您可能在Q_OBJECT
文件中没有tcamera.h
宏的情况下编译了该项目一次,之后又添加了该宏。并且由于在将调用添加到connect
之前不需要元对象,所以VC++不会尝试解析丢失的符号。