在动态库中链接Qt

时间:2009-07-18 13:14:20

标签: qt dynamic visual-c++

我有一个工作正常的动态库,我想在其中使用QObject。包含“qobject.h”标题后,我编译adn evrything很好。但是当我尝试声明一个QObject时,编译器总是给我一个“未找到标识符”错误。我尝试了QObject类的flaard eclaration,它没有帮助。这很奇怪,因为当我在我的dll中使用Qt时,visual studio的intellisense正在工作(例如:当我声明一个QObject时,visual sdio向我展示了我的QObject可用的函数)。在动态库中使用Qt有什么特别之处吗?我是否必须使用qmake编译它,因为我正在使用QObject?

感谢您的帮助

戴夫

编辑:问题似乎只发生在我包含stdafx.h之后。如果我尝试在Stdafx.h之后包含Qt标头,我的库无法编译,给我语法错误。如果我在包含Stdafx.h之前使用Qt引用,它编译并运行正常,但它没用,因为我不能在现有代码中使用Qt refenrence。

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 :: find(hwnd); 我包括QWidget

1 个答案:

答案 0 :(得分:0)

你在VS和Qt之间安装了integration吗?我相信你需要(代替使用qmake)应用程序和库。至于stdafx问题,我想你必须在那个标题和qobject之间遇到冲突的宏(但是如果我读到你就可以通过按顺序包含它们来绕过这个问题,qobject first和stdafx next - is那是对的吗?)。 [[显然不是,根据OP的最新评论]]。

编辑:有关使VS / Qt集成工作的一些说明是here,如果您使用的是Qt 4.5的LGPL版本 - 否则我相信集成产品是商业产品。 (如果您不是非常需要Visual Studio的某些特定方面,您可以使用Qt Creator来简化您的生活,但我确实认识到VS及其底层C ++编译器在其他方面可能更可取。) / p>