1 votes

Lier Qt dans une bibliothèque dynamique

J'ai une bibliothèque dynamique qui fonctionne bien, et je voudrais y utiliser un QObject. Après avoir inclus l'en-tête "qobject.h", je compile et tout se passe bien. Mais lorsque j'essaie de déclarer un QObject, le compilateur me donne toujours une erreur "identifier not found". J'ai essayé la déclaration anticipée de la classe QObject, mais cela n'a pas aidé. C'est bizarre car l'intellisense de Visual Studio fonctionne quand j'utilise Qt dans ma dll (ex : quand je déclare un QObject, Visual SDIO me montre les fonctions disponibles pour mon QObject). Y a-t-il quelque chose de spécial à faire pour utiliser Qt dans une bibliothèque dynamique ? Dois-je le compiler avec qmake maintenant que j'utilise un QObject ?

merci pour l'aide

Dave

EDIT : les problèmes ne semblent se produire qu'après avoir inclus stdafx.h. Si j'essaie d'inclure les en-têtes Qt après Stdafx.h, ma bibliothèque échoue à compiler, me donnant des erreurs de syntaxe. Si j'utilise une référence Qt avant d'inclure Stdafx.h, cela compile et fonctionne bien, mais c'est plutôt inutile, car je ne peux pas utiliser les références Qt dans mon code existant.

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

la ligne en question est QWidget::find(hwnd) ; et j'inclus QWidget

0voto

Alex Martelli Points 330805

Avez-vous installé le intégration entre VS et Qt ? Je pense que vous en avez besoin (au lieu d'utiliser qmake) pour les applications et les bibliothèques. En ce qui concerne le problème de stdafx, j'imagine que vous devez probablement rencontrer des macros conflictuelles entre cet en-tête et celui de qobject (mais si je vous lis correctement, vous pouvez contourner le problème en les incluant dans cet ordre, qobject d'abord et stdafx ensuite -- est-ce correct ?) [Apparemment pas, d'après le dernier commentaire de l'OP].

Editar Les instructions pour faire fonctionner l'intégration VS/Qt sont les suivantes aquí si vous utilisez la version LGPL de Qt 4.5 - sinon, je crois que le produit d'intégration est une offre commerciale. (Si vous n'avez pas désespérément besoin de certains aspects spécifiques de Visual Studio, vous pourriez alternativement vous simplifier la vie en utilisant Créateur Qt mais je réalise que VS et son compilateur C++ sous-jacent peuvent être préférables à d'autres égards).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X