2009-11-23 3 views
1

Je dois afficher un navigateur de propriétés sous une application MFC.Compilation Combinaison de qtwinmigrate + qtpropertybrowser Sous VC++ 2008

J'essaie de combiner et de compiler la solution pour les deux

http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Windows/qtwinmigrate/ http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Widgets/qtpropertybrowser/

J'utilise VC2009, QT 2009,04 avec Visual Studio Add-On 1.1.1

Prenez note, sous ma machine, il n'y a aucun problème pour moi de les compiler avec succès séparément.

je copier et ajouter tous les fichiers du RPC et linteaux exsiting trouvées dans

qtpropertybrowser-2.5-opensource\src 

dans

qtwinmigrate-2.8-opensource\examples\qtdll 

Voici comment mon nouveau projet ressemble dans le tournage de l'écran (qtwinmigrate - fenêtres à droite plus)

alt text http://yancheng.cheok.googlepages.com/help.png

Le qtpropertyb rowser, est le projet que je suis en mesure de compiler sans problème:

1>------ Rebuild All started: Project: simple, Configuration: Release Win32 ------ 
1>Deleting intermediate and output files for project 'simple', configuration 'Release|Win32' 
1>Moc'ing qtpropertybrowserutils_p.h... 
1>RCC ..\..\src\qtpropertybrowser.qrc 
1>MOC ..\..\src\qtvariantproperty.h 
1>MOC ..\..\src\qttreepropertybrowser.h 
1>MOC ..\..\src\qtpropertymanager.h 
1>MOC ..\..\src\qtpropertybrowser.h 
1>MOC ..\..\src\qtgroupboxpropertybrowser.h 
1>MOC ..\..\src\qteditorfactory.h 
1>MOC ..\..\src\qtbuttonpropertybrowser.h 
1>Compiling... 
. 
. 
. 
1>Compiling... 
1>moc_qtpropertybrowserutils_p.cpp 
1>Linking... 
1>Embedding manifest... 

Cependant, quand viendra construire la version modifiée de qtwinmigrate (version originale de qtwinmigrate a pu compilé sans problème)

1>------ Rebuild All started: Project: qtdialog, Configuration: Release Win32 ------ 
1>Deleting intermediate and output files for project 'qtdialog', configuration 'Release|Win32' 
1>Moc'ing qtpropertybrowserutils_p.h... 
1>Moc'ing qteditorfactory.h... 
1>Moc'ing qtvariantproperty.h... 
1>Moc'ing qttreepropertybrowser.h... 
1>Moc'ing qtpropertymanager.h... 
1>Moc'ing qtpropertybrowser.h... 
1>Moc'ing qtgroupboxpropertybrowser.h... 
1>Moc'ing qtbuttonpropertybrowser.h... 
1>Moc'ing qwinwidget.h... 
1>Moc'ing qwinhost.h... 
1>Compiling... 
. 
. 
. 
1>Compiling... 
1>moc_qtpropertybrowserutils_p.cpp 
1>moc_qteditorfactory.cpp 
1>.\Release\moc_qteditorfactory.cpp(74) : error C2027: use of undefined type 'QtSpinBoxFactoryPrivate' 
1>  c:\documents and settings\yan-cheng.cheok\my documents\downloads\qtwinmigrate-2.8-opensource\qtwinmigrate-2.8-opensource\examples\qtdll\release\../../../lib/qtpropertybrowser-2.5-opensource/src/qteditorfactory.h(97) : see declaration of 'QtSpinBoxFactoryPrivate' 
1>.\Release\moc_qteditorfactory.cpp(74) : error C2227: left of '->slotPropertyChanged' must point to class/struct/union/generic type 

Mes questions est

  1. Pourquoi qtpropertybrowser seulement effectuer "Moc'ing" dans 1 fichier, mais qtwinmigrate effectuer "Moc'ing" dans tant de fichiers?
  2. Pourquoi qtpropertybrowser vient de compiler "moc_qtpropertybrowserutils_p.cpp", mais qtwinmigrate essaie de compiler tant de "moc _.... cpp"?

Répondre

0

1) Sous Visual Studio 2008, accédez à Qt -> Ouvrir le fichier de projet Qt (.pro), ouvrez qtpropertybrowser.pro

2) Aller aux propriétés "simples", sous Événements de génération -> l'événement pré-construction, entrez les commandes suivantes:

moc ..\..\src\qttreepropertybrowser.cpp > ..\..\src\qttreepropertybrowser.moc 
moc ..\..\src\qtpropertymanager.cpp > ..\..\src\qtpropertymanager.moc 
moc ..\..\src\qteditorfactory.cpp > ..\..\src\qteditorfactory.moc 

3) Sous C/C++ -> supplémentaires répertoires Inclure, entrez le chemin suivant:

..\..\lib\qtwinmigrate\src 

4) Sous général -> type de configuration, le changement de bibliothèque de liens dynamiques (dll)

5) Sous Linker -> général -> sortie Fichier, remplacez par \ qtdialog.dll

6) Exclure le fichier main.cpp d'origine du projet simple. Ajouter à main.cpp de

..\..\lib\qtwinmigrate\examples\qtdll 

7) Ajouter dans les 3 fichiers cpp et 3 fichiers en-tête de

..\..\lib\qtwinmigrate\src 

8) Construire tout. qtdialog.dll sera généré.

9) Ouvrez \ lib \ qtwinmigrate \ examples \ mfc \ step1. Construis tout.

10) Déplacer qtdialog.dll même répertoire que step1 généré exe. Exécutez l'application.

0

Il semble que vos deux fichiers vcproj n'ont pas les mêmes propriétés « moc » ... Il peut conduit à des comportements étranges avec les classes qui utilise le moc ...

Comment avez-vous générer le fichier vcproj dans le second projet?

Avez-vous créé à la fois vcproj à partir des fichiers PRO ou simplement en ajoutant les fichiers cpp/h existants directement dans VS? Si vous construisez le premier exemple du fichier PRO de l'exemple puis copiez simplement les fichiers cpp dans un autre vcproj en les ajoutant via VS, alors quelque chose s'est probablement mal passé avec les propriétés moc ...

Dans vos fichiers vcproj, essayez et regardez pour "moc_" et chercher des différences entre les deux fichiers ... Je pense qu'il vous donnera un pas de plus dans le processus de trouver la source de votre problème ...

J'espère que cela aide un peu ...

Questions connexes