首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QT:找不到Moc文件

找不到Moc文件通常是由于Qt编译过程中的问题导致的。Moc文件是Qt的元对象编译器(Meta Object Compiler)生成的,用于支持Qt的信号和槽机制。以下是一些可能的原因和解决方案:

  1. 确保.pro文件中包含了所有的源文件和头文件。在.pro文件中添加以下内容:HEADERS += header1.h header2.h SOURCES += source1.cpp source2.cppQT += core gui widgetsHEADERS += moc_*.hqmake makemoc header1.h -o moc_header1.cpp moc header2.h -o moc_header2.cpp然后再次编译项目。
  2. 确保.pro文件中包含了Qt的模块。在.pro文件中添加以下内容:
  3. 确保.pro文件中包含了moc_*.cpp文件。在.pro文件中添加以下内容:
  4. 确保在编译时使用了Qt的编译工具。在命令行中使用以下命令进行编译:
  5. 如果仍然无法解决问题,尝试手动运行moc工具。在命令行中使用以下命令:

如果以上方法都无法解决问题,建议查看Qt的官方文档和社区论坛,以获取更多帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VS中Qt自动生成moc_XXX.cpp文件的一些问题

会自己先把用到Qt自己的东西编译一遍,变成标准C++编译器可以识别的东西。...moc 全称是 Meta-Object Compiler,也就是“元对象编译器”。Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。...如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。...这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。另外,我们还可以看出一点,moc 的执行是在预处理器之前。...全删除了(是在VS的工程项目中删除的,在文件夹中删除了,无所谓,每次编译的时候,会自动moc,这个过程是你XXX.cpp文件的设置)。

3.2K21

qmake:配置qmake

:主机可执行文件的位置 QT_HOST_DATA:qmake 使用的主机可执行文件的数据位置 QT_HOST_PREFIX:所有主机路径的默认前缀 QT_INSTALL_ARCHDATA:依赖于一般架构的...当 qmake 运行时,除非指定 – nocache 参数,否则它会在当前目录的父目录中查找名为 .qmake.cache 的文件 如果。qmake 找不到这个文件,它会默默地忽略这一步处理。...例如,可以在项目文件中使用以下分配重新定义用于 moc 文件的扩展名: QMAKE_EXT_MOC = .mymoc 以下变量可用于重新定义 qmake 识别的常见文件扩展名: QMAKE_EXT_MOC...:修改放置在包含的 moc 文件上的扩展名。...以上所有都只接受第一个值,下面的代码第二行不起作用: QMAKE_EXT_MOC = .mymoc_1 QMAKE_EXT_MOC = .mymoc_2 有两个变量可以接受值列表: QMAKE_EXT_CPP

2.5K10

QTQT文件处理

文件处理 QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件Qt资源文件。 处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。...处理临时文件可以使用QTemporaryFile,获取信息可以使用QFileInfo,处理目录可以使用QDir,监视文件和目录变化可以使用QFileSystemWatcher。...qint64 size = info.size();//获取文件大小 QDateTime createTime = info.created();//获取文件创建时间 QDateTime...lastModTime = info.lastModified();//获取文件最后一次被的修改的时间 QDateTime lasReadTime = info.lastRead();//获取文件最后一次被读取的时间...//文件的属性信息 bool isDir = info.isDir();//是不是目录 bool isFile = info.isFile();//是不是文件 bool

1.5K20

Qmake VS Cmake

-Le:\Qt\4.7.0\lib -lQtCore4 指定头文件目录,以及需要链接的库 qmake qmake 需要一个 .pro 文件: CONFIG += qt QT -= gui SOURCES...mainwindow.h -o moc_mainwindow.cpp 调用编译器进行编译 g++ main.cpp mainwindow.cpp moc_mainwindow.cpp -Ie:\Qt...}) 需要 moc文件,用 QT4_WRAP_CPP 处理 生成的文件放入变量 example_MOCS 中,最后一块链接到可执行程序 需要 uic 的文件,用 QT4_WRAP_UI 处理...的 moc 和 uic,这次增加了资源系统 需要用 rcc rcc main.qrc -o qrc_main.cpp 同时,使用了windows下的资源文件 .rc (比如给程序添加图标) MVSC...}) 对Qt的资源文件,使用 QT4_ADD_RESOURCES 来调用rcc进行预处理 对 Windows 资源文件,直接和源文件一样,添加到列表中即可。

1.1K10

Qt核心:元对象系统(1)- 元对象和元数据

// 由脚本生成的文件// moc_MyClass.cpp#include "MyClass.h"// 这里是脚本解析原来头文件生成的数据// 解析了类的名称,成员,继承关系等等// ...const...,解析这个文件,获取元数据信息生成一个 moc_MyClass.cpp 文件,用上述信息初始化,然后让这个文件一起参与编译对应我们工作中写的类,我们会在类中加入 Q_OBJECT 宏来表示这个类需要使用元对象系统的特性...5.3 MOC 文件接下来就是完成初始化的过程了,在编译前,会先执行 moc 程序(meta object compiler),生成 moc_MyClass.cpp,这个过程可以看作是找到有标记的文件,...,moc文件中解析来的数据如下。...宏的相关类的信息,生成moc文件,得到元数据并构造元对象将生成的文件和源文件一起编译

2.1K10

关于在vs2010中编译Qt项目时出现“无法解析的外部命令”的错误

用CMake将Qt、VTK和ITK整合后,打开解决方案后添加新类时运行会出现“n个无法解析的外部命令”的错误。...原因是新建的类未能生成moc文件,解决办法是: 1.右键 要生成moc文件的.h文件,打开属性->常规->项类型改为自定义生成工具。 2.在新生成的选项中,填上相关内容: ?....h文件编译,即可在GeneratedFiles\debug文件夹下生成moc文件,拖入Grenerated目录下,即可。...关于moc文件,查看:qtmoc的作用 简单来说:mocQT的预编译器,用来处理代码中的slot,signal,emit,Q_OBJECT等。...moc文件是对应的处理代码,也就是Q_OBJECT宏的实现部分。 XX.ui文件生成ui_XX.h: 当前路径命令行输入uic XX.ui -o ui_XX.h

6.4K20

Qt undefined reference to `vtable for * * *

Qt 中是怎样出现该问题的 ①当把类SendMsg的声明放在单独的.h文件中,无上述错误 当时测试时,为了简便,我直接放在了main.cpp中,所以出现了上述错误。...在Qt中说明如下(Using the Meta-Object Compiler (moc)): 元对象编译器moc是处理Qt的C ++扩展的程序。 moc工具读取C ++头文件。...必须编译由moc生成的C ++源文件,并与该类的实现链接。 ②结论 由以上可知,moc是从头文件中读取程序的,所以放在main.cpp的程序无法生成新的c++文件。 3....解决方法 ①将类SendMsg的声明放在单独的.h文件中,可自动生成moc文件 ②手动生成.moc文件Qt安装目录下,找到moc.exe工具,手动生成.moc文件 手动生成.moc文件方法 ?...生成.moc文件效果 ?

3K20

Qt自定义信号槽

Qt居然编译通过,成功运行。这是因为,Qt有一个叫做moc(Meta Object Compiler,元对象编译器)的工具,它帮助我们实现了函数体。...其实Q_OBJECT也是被moc处理的,moc会处理含有Q_OBJECT的头文件。其实我们可以看到这个moc处理之后的文件。具体是这样的。...如果你勾选了项目下的Shadow build(Qt Creator 4.11.0默认勾选),那么Qt Creator会生成影子文件在另外一个文件夹里,这里放着你的Debug或者Release版本的可执行文件以及...moc处理过后moc_xxx.cpp文件。...这些cpp文件就是将xxx.h文件处理之后的形成的。如果你不勾选Shadow build,那么就和代码放在一个文件夹下。Qt这么做保证了源代码的纯净,使用太久的VS,我喜欢不勾选这个选项。 ?

1K10

Qt环境配置相关问题

Pro文件 2.Qmake -tp vc重新生成VS项目工程 来构建MOC文件(但不一定生成此文件,只是在工程文件中配置),用命令moc...文件系统默认输出到控制台,需要添加-o指定输出路径(如:moc *.h -o moc_*.cpp) Qmake:Qt的项目构建工具,可以生成Project工程文件或makefile文件(和CMake类似...,同时qt creator 可以直接打开cmakelist文件建立工程) QWidget中WinID即Win32中的HWnd窗口句柄 Qt 使用信号油槽(signal、slot...2.Qt Creator(推荐使用Qt4的版本) 1.Qt Creator构建项目出现LNK1123: 转换到 COFF 期间失败错误:需要在pro文件中添加...+= -L%path% -l 导入文件名 3.VS插件开发Qt Qt官网:http://www.qt.io/download/ 以开源项目的身份进入免费下载VS插件和Qt SDK

2.2K40

解决cpp添加QObject派生类的问题

一般我们继承QObject类在头文件中添加,但是有时候需要在源文件中添加。这样就会不可避免地出现编译错误。那么我们该究竟怎么解决它呢?...char *argv[]) { QCoreApplication a(argc, argv); Object object; return a.exec(); } 问题分析 这是Qt...由于moc工具不识别cpp文件中继承于QObject的类,这样就不能自动为该类添加一些实现函数(元对象函数),就会导致函数未定义的错误。...当qmake运行起来时,moc工具会自动识别处理头文件中所有继承于QObject的类和一系列Qt元对象属性。 要想让moc识别cpp文件,只需要包含#include 当前文件.moc就可以了。...解决步骤(方法) 包含当前文件.moc到其类定义下或最后一行(注意:不能Object类先于定义); 清除项目->qmake->编译。

1.7K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券