神秘的Qt未定义界面:调查

时间:2018-04-12 16:13:33

标签: qt interface compiler-errors

我正在编写一个带插件的典型Qt(4.8.2)应用程序。其中一个插件包括几个自定义接口,通过调用Q_INTERFACE宏。这些接口位于项目可见的.h文件中(通过.pro包含),它们都包含对Q_DECLARE_INTERFACES的宏调用。

然而,在编译 moc文件时,我在插件的主.h文件中遇到未定义的接口错误。它没有告诉我哪个,它只指定了第一行(我尝试更改顺序但没有区别 - 除非所有接口都受到影响 - 哎呀,谁知道,这可能是案件。)

此插件可在其他人的办公桌上使用。主应用程序中的一些东西是用Qt 5编写的,但总是用宏来检查版本并包含像我这样的早期版本的其他代码。这也适用于使用4.8.2插件的其他人的办公桌。

在哪里查找该错误的原因?

1 个答案:

答案 0 :(得分:0)

我不知道为什么我的问题被否决了,但这里的答案是:

通过项目副本,我还收到了moc _ * .cpp文件和一些名为 mocinclude.tmp 的文件。这是第一个 git add 错误。

但还有另一个问题:至少后者(如果不是前者)没有得到正确清理或通过Qmake / make clean重新创建。

第三个问题:在 mocinclude.tmp 中,首次创建项目的计算机中有绝对文件路径,这些路径不是我的。相对路径不易出错。

那些错误的绝对路径导致了未定义的界面"在编译moc文件时出现错误(但没有找到"找不到文件"在需要的接口文件的情况下出错)。

删除所有 mocinclude.tmp (和moc文件)解决了我的问题。

(我也确保告诉git不再跟踪它们。)