Qt:LNK2001和LNK2019 跨源文件实现信号/时隙后会出现错误
Qt: LNK2001 and LNK2019 Errors arise after implementing a signal/slot across source files
这包括我的 MainWindow 文件中的声明,为了简洁起见,我没有包含库包含。我已经在两者和所有必需的库中都包含了 QObject.h。在包含第二个连接调用之前,它编译得很好。第一个 Ctrl-C 处理程序工作正常。
I took out my code, thought my employer wouldn't like it. See the appropriate response below!
我正在使用QT创建器。当我用谷歌搜索这些错误消息时,提供的大多数解决方案都围绕着修复make命令/路径或在Visual Studio中编译时发生的那种东西。
我重申,这些错误仅在包含全局GCamera和MainWindow的第二次连接调用后才出现。在此之前,该程序正在编译和运行。
提前感谢您,对于冗长的帖子,我深表歉意,并期待收到任何意见。
你应该有一个名为 moc_tcamera.cpp
的文件来实现构建目录中缺少的符号。
如果它不存在,你应该"运行qmake",然后"重建"你的项目(这两个操作都在Qt Creator Build菜单中)。
发生错误的原因:
qmake为所有包含宏Q_OBJECT
或Q_GADGET
的源文件在Makefile中添加了一个moc(Qt的元对象编译器)步骤,这样的文件被称为"mocable"。一旦文件被检测到为mocable或non-mocable,该状态不会更改,直到重新运行qmake。
QtCreator 仅在 .pro 文件更改时(例如,当您添加或删除文件时)自行运行 qmake。
这意味着您可能在文件tcamera.h
中没有Q_OBJECT
宏的情况下编译了一次项目,然后添加了该宏。而且因为在你添加对connect
的调用之前你不需要元对象,所以VC++没有尝试解决缺少的符号。
例如,当您在 .pro 文件中包含标头而不是源时,可能会出现链接器错误。例如,在您的 .pro 文件中:
HEADERS += t_camera.h foo.h
SOURCES += foo.cpp
会导致链接器错误,通常是LNK2001和LNK2019。但是,IIRC QtCreator为您管理.pro文件,对吗?换句话说,请确保您的 .pro 文件正确无误。如果不是,我会感到惊讶,但是.pro文件中的错误可能会导致您看到的问题。
- 为什么我在使用void函数时得到错误代码C2276
- 在cygwin中运行c++脚本时发生错误
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- posix_spawn():使用posix_scawn()时的错误处理问题
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 使用 bfs 解决连接组件问题时得到错误的答案
- 尝试了解在导入的静态方法上使用删除方法时的错误
- 以只读模式打开数据库时SQLITE_CANTOPEN错误
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- 标头,包括在 Swift 项目中使用C++文件时的错误
- 当我尝试通过构造函数分配 char 数组时出现错误
- 包含在 <WinSock2> Visual Studio 2015 中时出现错误
- 我在 ndk 中构建文件时遇到错误 android.mk
- 从 C 可执行文件加载动态库时收到错误C++"undefined symbol"
- 构建 Tensorflow 调试时出现错误LNK2019
- C++ 将元素分配给映射值时访问错误
- 使用动态数组时C++逻辑错误
- 运行合并排序递归算法时EXC_BAD_ACCESS错误
- Qt:LNK2001和LNK2019 跨源文件实现信号/时隙后会出现错误