我在我的项目中使用了QtPropertyBrowser,它基于ObjectController
示例。我使用Visual Studio 2010作为IDE和Qt 5.2.1(我可以重现Qt 4.7和4.8的错误)。将moc_objectcontroller.cpp添加到Visual Studio源代码树时出现QtPropertyBrowser编译器错误
全部moc_*.cpp
文件被添加到源树GeneratedFiles\$(Configuration)
。不幸的是,这会导致以下编译器错误:
2> moc_objectcontroller.cpp
2> GeneratedFiles\Release\moc_objectcontroller.cpp(70): error C2027: use of undefined type 'ObjectControllerPrivate'
2> c:\***\guimain\generatedfiles\release\../../src/objectcontroller.h(45) : see declaration of 'ObjectControllerPrivate'
2> GeneratedFiles\Release\moc_objectcontroller.cpp(70): error C2227: left of '->slotValueChanged' must point to class/struct/union/generic type
当我从源代码树中删除moc_objectcontroller.cpp
(并没有实际删除磁盘上的文件),该项目构建并运行良好。所有其他moc_*.cpp
文件已将置于源代码树中,否则该项目将无法链接。
有人知道,为什么编译器会产生错误?有没有解决方法/你知道的解决方法?
编辑:上请求相应的码数:
- http://pastebin.com/2JQaa3Dr(moc_objectcontroller.cpp)
- http://pastebin.com/5iBQX59u(objectcontroller.cpp)
- http://pastebin.com/M2mm66R9(objectcontroller.h)
在我的MSVC2012和Qt 5.1.0中正常工作。请显示'moc_objectcontroller.cpp'文件的内容,并提供指向您使用的示例的确切版本的链接。也可能是你的Qt安装有问题,请尝试重新安装。 –
@PavelStrakhov:谢谢你的评论。确切的代码可以在添加的链接中找到。我已经尝试过Qt的多个版本,都是从源代码构建的并安装的。同样在MSVC2012中(VC2010模式),我得到相同的编译器错误。 –