2009-07-18 87 views
1

我有一个工作正常的动态库,并且我想在其中使用QObject。在包含“qobject.h”头文件后,我编译并添加了evrything。但是当我尝试声明一个QObject时,编译器总是给我一个“找不到标识符”的错误。我尝试过QObject类的炫耀,它没有帮助。这很奇怪,因为当我在我的dll中使用Qt时,visual studio的intellisense正在工作(例如:当我声明一个QObject时,visual sdio显示我可用于QObject的函数)。在动态库中使用Qt有什么特别之处吗?我现在需要使用QObject来编译它吗?在动态库中链接Qt

感谢您的帮助

戴夫

编辑:问题似乎只出现后我包括stdafx.h中。如果我试图在Stdafx.h后包含Qt头文件,我的库无法编译,给我语法错误。如果在包含Stdafx.h之前使用Qt引用,它会编译并运行良好,但是这种方法没用,因为我无法在现有代码中使用Qt引用。

1>c:\users\dave\documents\visual studio 2008\projects\frogger\froggerdll\ftclient.cpp(47) : error C2653: 'QWidget' : is not a class or namespace name 
1>c:\users\dave\documents\visual studio 2008\projects\frogger\froggerdll\ftclient.cpp(47) : error C3861: 'find': identifier not found 

所讨论的行是QWidget的::找到(HWND); 和我包括QWidget

回答

0

你在VS和Qt之间安装了integration吗?我确实相信你需要(代替使用qmake)来应用程序和库。至于stdafx问题,我想你必须碰到该头文件和qobject文件之间的相互冲突的宏(但是如果我读了你的话,你可以通过按顺序包含它们来绕过问题,首先是qobject,然后是stdafx--是那是正确的?)。 [[显然不是,根据OP的最新评论]]。

编辑:上让VS/Qt的整合工作的一些指令是here,如果你使用Qt 4.5的版本LGPL - 否则我认为集成产品是一个商业产品。 (如果您不需要Visual Studio的某些特定方面,您可以使用Qt Creator来代替,但是我确实意识到VS及其底层C++编译器在其他方面可能更可取)。

+0

好吧,我可以绕过它,通过包括他们在正确的顺序,但然后我不能使用QObject,所以它不能真正解决我的问题。我会尝试安装整合。有什么特别的步骤需要采取,还是应该在那之后编译好? – 2009-07-18 17:46:14