Qt 且没有 moc_*.cpp 文件

2024-03-21

我正在开发一个简单的 Qt 4 应用程序并制作自己的对话框。我子类化了QDialog,插入Q_OBJECT类声明块中的宏,并且......我明白了

[链接器错误]未定义对“MyDialog vtable”的引用,并且没有 moc_MyDialog.cpp 由 moc 编译器生成。

我在 Windows XP 和 mingw 上使用 Qt 4.1.3。我从 Qt 提供的构建 shell 中遵循了构建过程。我使用 qmake 创建 make 文件并使用 make 命令编译所有内容。

我还有其他子类QPushButton and QObject分别,但它们编译正常。我找不到它们和破损的有什么区别。

破碎的班级中肯定缺少一些东西,但我无法发现它。


由于没有 moc 文件,导致对“vtable for MyDialog”的未定义引用。大多数 C++ 编译器在包含第一个虚函数的目标文件中创建 vtable 定义。当子类化 qt 对象并使用 Q_OBJECT 宏时,这将位于 moc*.cpp 文件中。因此,这个错误意味着moc文件丢失。

我能想到的可能出现的问题有:

  1. 类 MyDialog.h 的头文件未添加到 qmake 文件中的 HEADERS 中。

  2. 您运行 qmake 来生成 make 文件before添加 Q_OBJECT 宏。这创建了一个没有 moc 规则的 make 文件。只需再次运行 qmake 即可轻松解决此问题。

  3. 您的对话框派生自多个类,并且 QDialog 不是它派生的第一个类。为了使 qmake 正确工作,QObject 派生基类必须是第一个继承的类。

  4. 如果您使用 Qt Creator,并且之前的部署由于某种原因(例如应用程序已在运行)而失败,则可能会收到此错误。在这种情况下,只需执行“清理项目”,然后“重建项目”,然后“运行”即可进行部署。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 且没有 moc_*.cpp 文件 的相关文章

随机推荐

  • Kotlin Android 扩展是否缓存合成属性或每次调用 findViewById() 时?

    如果我有一个简单的自定义视图 myitem xml
  • 检查 sys.argv[x] 是否已定义

    检查变量是否已传递给脚本的最佳方法是什么 try sys argv 1 except NameError startingpoint blah else startingpoint sys argv 1 检查长度sys argv if le
  • 如何使用 sf 更改国家之间共享边界的颜色?

    我想将共享颜色更改为不同的颜色 比如说红色 到目前为止 我正在绘制德国联邦州巴伐利亚并触及奥地利各州 我从以下位置获取数据https gadm org download country html https gadm org downloa
  • 尝试调用不存在的方法。超导系统

    当我运行 STS Spring Boot 应用程序时 出现以下错误 The attempt was made from the following location org apache catalina authenticator Aut
  • PITest 找不到测试

    我们的项目都是由整个公司的母公司设置的 对于我正在处理的项目 我们有一个根 pom 它引用该父级 并在其下面有许多模块 尝试单独将 PITest 与这些模块中的任何一个一起使用 或者在根模块上使用 都会导致不运行任何测试 lp server
  • 在 Notepad++ 中获取我自己的 PHP 函数的参数提示

    在 首选项 gt 备份 自动完成 中启用 输入时的函数参数提示 后 我获得了有关本机 PHP 函数的有用提示 如下所示 string false substr string str int start int length 是否有插件或其他
  • 音频会话服务: kAudioSessionProperty_OverrideAudioRoute 具有不同的输入和输出路由

    我正在摆弄音频会话服务 我正在尝试控制音频路由设置AudioSessionSetProperty kAudioSessionProperty OverrideAudioRoute as kAudioSessionOverrideAudioR
  • 在模型类中使用 java.awt.Point - 糟糕的编码风格?

    我有一个场景 对象在坐标系上移动 我考虑在我的模型类中使用 java awt Point 因为它提供了我需要的所有功能 位置表示 翻译 距离计算 但在我的模型中使用 java awt 类感觉有些错误 但重写相同的功能也不是答案 所以我的问题
  • MATLAB 中不使用 for 循环的多个数组的交集

    我总是被告知 在 MATLAB 中几乎所有的 for 循环都可以省略 而且它们通常会减慢进程 那么这里有办法做到这一点吗 我有一个元胞数组 tsCell tsCell存储不同长度的时间数组 我想为所有时间数组找到一个相交的时间数组 Inte
  • Twig 数组访问

    我正在尝试打印传递给树枝模板的变量的值 我正在使用这段代码 naziv 0 索引为 0 因为传递的数组只有一个元素 提到的代码会产生以下错误 具有键 title 的数组的键 0 不存在于 但是当我像这样使用 for 循环时 for key
  • Proguard (R8) 混淆自定义视图名称

    我在我的应用程序中使用 R8 并且有几个自定义视图 在 xml 布局中引用 但它们的名称根本没有混淆 有什么办法可以实现这一点吗 我正在使用标准 Gradle 规则 release minifyEnabled true shrinkReso
  • 常规语言的最小泵送长度

    如何计算正则语言的最小泵送长度 例如 如果我有 0001 则最小泵送长度应为 4 即 000 无法泵送 为什么会这样呢 它将小于或等于该语言的最小 DFA 中的状态数减一 因此 将正则表达式转换为 DFA 最小化它 并对状态进行计数 对于你
  • 如何将 Git 子模块与 Composer 加载的库一起使用?

    我有一个 Zend Framework 2 应用程序 它包含一些包含业务逻辑的库代码和一些其他实用程序 这些代码对于稍后创建的其他应用程序来说是通用的 我的目的是使用 Composer 跨项目共享它 问题是 我该如何正确地做到这一点并简化开
  • Visual Studio 2010 中的自动源文件前导码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想配置我的 VS2010 以便每次创建新的源文件时 都包含一个注释序言 将包含许可证 我们迫切需要的
  • 如何从我的 URL 中隐藏“cgi-bin”、“.py”等?

    全新的网页设计 使用 python 让 Apache 启动并运行 测试 python 脚本在 cgi bin 目录中工作 当我显式输入 URL 时获得有效结果 cgi bin showenv py 但我不希望 URL 看起来那样 例如 在
  • #pragma mark 未列出第一个组名称

    我在用着 pragma mark将我的方法分组到某些类别下 但问题在于Xcode 4我的第一个类别没有显示 我的代码如下所示 interface MyClass NSObject pragma mark pragma mark Catego
  • 使用 Proguard 处理 Jackson 库后混淆时出错

    在使用 Proguard 搜索了与混淆问题相关的各种查询之后 我觉得我可能是only一个有这个特殊问题的人 因此 该帖子 我有一个相当标准的 Android 应用程序 它使用基于 JSON 的 REST 调用来交换数据 我利用Jackson
  • 在有关 Android 工具链的“flutter doctor”中显示错误

    显示有关 android 工具链的错误 Android toolchain develop for Android devices Android SDK version 29 0 3 Android license status unkn
  • 什么是 Ruby <=>(宇宙飞船)运算符?

    什么是红宝石 lt gt 宇宙飞船 操作员 该运算符是否由其他语言实现 The 宇宙飞船操作员 https ruby doc org core 3 0 0 Comparable html将返回1 0 or 1取决于左参数相对于右参数的值 a
  • Qt 且没有 moc_*.cpp 文件

    我正在开发一个简单的 Qt 4 应用程序并制作自己的对话框 我子类化了QDialog 插入Q OBJECT类声明块中的宏 并且 我明白了 链接器错误 未定义对 MyDialog vtable 的引用 并且没有 moc MyDialog cp