4

这包括我的 MainWindow 文件中的声明,为简洁起见,我没有包含库包含。我在这两个库和所有必需的库中都包含了 QObject.h。在包含第二个连接调用之前,它编译得很好。第一个 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 的第二次连接调用之后才出现。该程序在此之前正在编译和运行。

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

4

2 回答 2

5

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

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

发生错误的原因:

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

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

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

于 2012-05-10T02:09:44.127 回答
1

例如,当您在 .pro 文件中包含标头而不是源文件时,您可能会收到链接器错误。例如在您的 .pro 文件中:

HEADERS += t_camera.h foo.h
SOURCES += foo.cpp 

会导致您出现链接器错误,通常是 LNK2001 和 LNK2019。但是,IIRC QtCreator 会为您管理 .pro 文件,对吗?换句话说,确保您的 .pro 文件是正确的。如果不是,我会感到惊讶,但 .pro 文件中的错误可能会导致您看到的问题。

于 2012-05-10T04:47:22.063 回答