【发布时间】:2012-05-10 00:16:07
【问题描述】:
这由我的 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 的第二个连接调用之后才出现。该程序在此之前正在编译和运行。
提前感谢您,对于冗长的帖子,我深表歉意,并期待收到任何意见。
【问题讨论】:
-
为什么要在 QObject #include 周围使用标头保护?另外,您是否尝试过运行 qmake?最后,您是否在包含 MainWindow 构造函数的文件中添加了
#include "tcamera.h"(或任何该头文件被调用)? -
是的,我有。我只是认为包含头卫会更安全,按照我的理解,包含它们并没有什么害处,对吧?除非那里有问题,否则所有包含的内容都已处理完毕。此外,如果它是一个依赖问题,那么在实现连接之前就会提出链接器问题......虽然我没有尝试过 qmake,让我试试。
-
通常在头文件的顶部包含头文件保护,以确保在该文件中声明的类(非子类)不会被多次声明。尝试移除防护装置,看看会发生什么。
-
我在两个文件上都试过了(都包括 QObject),这并没有改变任何东西。守卫不应该影响任何东西,它们只是为了保护东西不被包含两次左右。
-
由于这是一个链接器问题,最好查看两个头文件的完整内容。
标签: c++ qt linker qt-creator