Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 神秘的未定义接口:调查_Qt_Interface_Compiler Errors - Fatal编程技术网

Qt 神秘的未定义接口:调查

Qt 神秘的未定义接口:调查,qt,interface,compiler-errors,Qt,Interface,Compiler Errors,我正在编写一个带有插件的典型Qt(4.8.2)应用程序。其中一个插件通过调用Q_INTERFACE宏包含两个自定义接口。这些接口位于项目可见的.h文件中(通过.pro includes),它们都包含对Q_DECLARE_接口的宏调用 然而,在编译moc文件时,我在插件的main.h文件中得到了一个未定义的接口错误。虽然它没有告诉我是哪一行,但它只指定了第一行(我尝试更改顺序,但没有任何区别——除非所有接口都受到影响——见鬼,谁知道,可能就是这样。) 这个插件在其他人的桌子上工作。主应用程序中的一

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

然而,在编译moc文件时,我在插件的main.h文件中得到了一个未定义的接口错误。虽然它没有告诉我是哪一行,但它只指定了第一行(我尝试更改顺序,但没有任何区别——除非所有接口都受到影响——见鬼,谁知道,可能就是这样。)

这个插件在其他人的桌子上工作。主应用程序中的一些内容是使用Qt5编写的,但始终使用宏来检查版本,并包含其他类似于我的早期版本的代码。这也适用于使用4.8.2作为插件的其他人的办公桌


哪里可以找到错误的原因?

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

在项目副本中,我还收到了moc.*.cpp文件和一些名为mocclude.tmp的文件。这是git添加的第一个错误

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

第三个问题:在mocclude.tmp中,有来自最初创建项目的计算机的绝对文件路径,这不是我的路径。相对路径不太容易出错

在编译moc文件时,这些错误的绝对路径导致了“未定义接口”错误(在需要接口文件的情况下,这只是一个“未找到文件”错误)

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


(我还确保告诉git不要再跟踪他们了。)

为什么我投了反对票?