问题标签 [moc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - QObject 创建 moc 文件,但仍然出现 vtable 错误
在将 PrimitivePartsWrapper 设为 QObject 的子类(包括 Q_OBJECT 宏)之后,我似乎无法摆脱这个错误。
我已经运行了 qmake,并且 moc_primitive.cpp 包含在 makefile 中。它似乎只发生在 Qt 创建者中。如果我在命令行上运行 make,程序会编译,但我的嵌入式 python 中出现错误,无法找到 PrimitiveParts 类,这可能是不相关的。QtCreator中的错误是否与register.o而不是primitive.o有关?还是 moc_primitive.o?
原始的.h:
原始的.cpp:
qt - CMake + Qt : 定义 moc/ui 输出目录
我目前正在将使用 qmake 构建的项目转移到 CMake。
在带有 qmake 的版本中,在 .pri 文件中,有
允许在给定目录中生成 MOC 临时文件,保持源代码清洁。如何用 CMake 做同样的事情?
注意:对于 CMake,我使用FindQt4.cmake
package 和 command QT4_WRAP_CPP()
。
compilation - 为什么 Qt Creator 在我的所有文件上运行 MOC?
我有一个启用了预编译头文件的 Qt 项目。直到最近,编译工作正常。但是自从露水的日子以来,我注意到 Qt Creator 总是在我所有的 Q_OBJECT 文件上运行 MOC,即使是那些没有被更改的文件。正因为如此,许多 CPP 文件也需要无缘无故地重建。
有什么理由会发生这种情况吗?我正在查看编译输出,但没有看到任何特别之处。任何的想法?
c++ - 为什么这个简单的 Qt 应用程序没有链接
我尝试编写一个简单的 Qt 应用程序,如下所示:
主.cpp:
但是当我尝试编译并将其与 Qt Creator 2.3.1 (Qt 4.7.4) 链接时,我收到 3 个“未解析的外部符号”错误:
main.obj:-1:错误:LNK2001:未解析的外部符号
“”public:虚拟结构 QMetaObject const * __thiscall MyApp::metaObject(void)const“
(?metaObject@MyApp@@UBEPBUQMetaObject@@XZ)”。main.obj:-1:错误:LNK2001:未解析的外部符号
“”public:virtual void * __thiscall MyApp::qt_metacast(char const*)“
(?qt_metacast@MyApp@@UAEPAXPBD@Z)”。-
main.obj:-1: 错误: LNK2001: 无法解析的外部符号
“”public: virtual int __thiscall MyApp::qt_metacall(enum QMetaObject::Call,int,void * *)"
(?qt_metacall@MyApp@@UAEHW4Call@QMetaObject@ @HPAPAX@Z)"。
我认为它们在某种程度上与 Qt 的 MetaObjectCompiler 相关,但我无法找到解决方案。我知道在 c++ 中将声明和定义放在一个文件中并不被认为是好的编程风格,但这不是重点。在我看来,这应该是可能的,因为这里没有语法错误。
qt - 如果 .cpp 文件中有 Q_OBJECT 宏,为什么我的项目没有链接?
此代码按预期编译、链接和工作:
但是当我将类定义放在.cpp
文件而不是头文件中时,我得到链接器错误,指出vtable
没有正确定义。
这似乎是完全相同的代码。为什么当代码在标题中时它会链接,而在其他情况下它不会链接?
qt - 如何在 qmake 项目中向 moc 添加特定标志?
qmake && make
我使用以下文件编译 Qt 可执行project.pro
文件:
但是,在编译时,moc
会阻塞无法解析的 boost 宏。要解决此错误,我需要将标志传递-DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED
给 moc,但我无法做到。
如何编辑我的.pro
文件以将给定的标志传递给moc
?(但不是g++
,就像QMAKE_CXXFLAGS
那样)
qt - 从某些位置运行时 Qt moc 无法正常工作
我有一个 Qt 项目,我试图在 Windows 7 上使用 jom 进行编译。当源位于一个位置时,我可以从命令行很好地编译它。但是,当我从另一个位置的 git 中提取源代码并尝试编译它时,出现以下错误
moc:指定的输入文件过多
这真的很奇怪,因为在这两种情况下,我只是从同一个 git 存储库中提取代码,并且代码在一个位置编译良好,而在另一个位置编译失败。我已经尝试过 nmake 并得到了相同的结果。
作为比较,这里有两个命令。第一个失败,第二个成功。
有什么想法吗?
qt4 - 多个定义错误:一个在我的文件中,一个在 moc 文件中。
我有一个名为 FindAndReplaceBar 的类,它的实现是这样的:
当我运行程序时,我遇到了多个函数定义的问题:
findNext()
, findPrevious()
, replace()
, replaceAll()
.
另一个定义在 moc_FindAndReplaceBar.cpp 文件中进行。我不确定是什么问题,所以我不知道如何解决它!我真的很感激任何帮助,谢谢!
qt - Qt moc_file 问题
我是一名学生程序员,我正在使用 Qt 构建一些用于工作的 GUI 应用程序,我一遍又一遍地遇到 moc 问题。我希望能解决我当前遇到的问题;但是,如果在 Qt 方面有更多经验的人可以了解如何在更改 cpp 文件时正确处理这些文件,我将不胜感激。在我最近的更改中(抱歉,我不能发布它的样子,因为它显然已经过重组)我通过在我的 checkData 函数中嵌套一个函数来验证数据。因为我希望每个可能无效的字段都出现特定错误,所以我开始为每个 QLineEdit 创建一个函数。我意识到这不会起作用(或至少做更多的工作),而不是仅仅提供信息的排序检查。
最初我有 InjectionDialog::checkFluidVelociy 进行第一次检查,但很快就决定反对它。现在重组代码后,我收到错误消息:
在函数'InjectionDialog::checkFluidVelocity(QMetaObject::Call, int, void**)'中:这个错误被引用到 moc_injectionDialog.o
对“InjectionDialog::checkFluidVelocity()”的未识别引用 此错误引用到 moc_injectiondialog.cpp
在 moc_injectiondialog 我有以下我列出了以下内容:
我查看了其他一些 moc_file 帖子,其中大多数都说要让 Qt 清理并重建项目。我已经运行了一个项目清理并重建所有项目以尝试彻底检查这个 moc 文件,但在消除错误方面没有任何成功。这似乎是一个错误,但我在网上找不到任何关于它的信息,所以也许这是我不知道的事情。提前感谢您提供的任何帮助。
qt - Qt程序不链接,没有生成moc文件
我正在使用 Qt、CMake 和 VS2010 编译器。当我链接一小段测试代码时似乎有问题。链接器给出以下错误:
(持续一段时间)
当我尝试在以下代码中从 QObject 继承时发生错误:
如果我省略 Q_OBJECT,程序链接,但我不能在运行时使用类插槽。我注意到没有为 plotter.h 生成 moc 文件。这是我的 CMakeLists.txt:
为dialog.cpp生成了一个moc文件,但没有为plotter.cpp生成一个moc文件,这怎么可能?
谢谢!