Pourquoi mes parts “compilé avec une version différente” de mes propres fichiers?
Je suis en train de construire un programme qui utilise des plugins. Malheureusement, le plugin cadre de la liaison dynamique des forces de l'RTL et la VCL de mon projet EXE et dans la BPL versions, et ils n'ont pas les informations de débogage activé.
Alors j'ai construit un framework de test que des liens vers mes plugins statiquement je peux donc voir ce que je fais pendant le suivi à travers le code. Mais maintenant, chaque fois que j'essaie de recompiler, j'obtiens une erreur: "l'unité turbu_skills a été compilé avec une version différente de turbu_database.GDatabase"
J'ai vu cette erreur avant, mais seulement quand j'ai été de changer les choses que je ne devrais pas avoir été, comme RTL ou VCL bibliothèques. Je ne comprends pas pourquoi il le fait avec mon propre code. Le turbu_skills et turbu_database unités sont les unités que j'ai écrit moi-même. GDatabase global, un singleton variable, dont la définition de la classe, je n'ai pas changé en quelques semaines. Tout changement qui déclenche une recompilation la cause de cette erreur, même si je n'ai pas touché quoi que ce soit dans l'une des unités.
De faire construire (SHIFT-F9) causes pour compiler correctement. Mais si je puis appuyez sur ESPACE dans une unité (tout unité) et appuyez sur F9, j'obtiens l'erreur à nouveau. Ce qui se passe et comment puis-je l'arrêter? Cela ne se produit pas dans l'application principale, seule la structure de test.
EDIT: j'ai la source de toutes mes unités. La suppression de DCUs et les fichiers similaires ne l'aide pas. La copie de l'intégralité du projet sur un autre ordinateur, en supprimant toutes les DCUs, et le bâtiment n'aide pas. Il y a un objectif, reproductible conflit entre la mise en page de mon programme et le compilateur, et je veux être en débarrasser.
La source peut être trouvé à http://www.turbu-rpg.com/downloads/Turbu_source_setup.exe si quelqu'un veut le tester. Il nécessite Delphi 2009 avec la JVCL déjà installé; le package du programme d'installation va prendre soin de tout le reste. Peut-être avoir le code source disponible pour aider quelqu'un à suivre ce vers le bas. Je l'espère bien, parce que chaque fois que la question est, il est au delà de moi. Ce problème peut être trouvée dans testing.exe et aussi dans turbu.exe dans la turbu.groupproj.
EDIT 2: en fait, c'était une autre unité de génériques question. Grr. J'ai réussi à coder une solution de contournement. J'espère juste qu'ils obtiennent les médicaments génériques problèmes résolus rapidement.
Merci pour l'ÉDITION 2, j'aimerais bien venir ici gaspillé quelques heures plus tôt...
Wheeler - 12 réponses différentes! IL EST tout SIMPLEMENT INCROYABLE de voir comment beaucoup de gens ont (tous types de problèmes liés à la recherche/chemin de la bibliothèque. Embarcadero a fait un très très très mauvais travail en expliquant cela!
OriginalL'auteur Mason Wheeler | 2009-01-09
Vous devez vous connecter pour publier un commentaire.
L'erreur "l'unité est compilé avec une version différente de...", c'est gênant. Il se produit dans une situation comme ci-dessous:
À la fois de l'unité A et B unité C unité et B utilise Unité C. B et C sont compilés et pour une raison quelconque, la source de l'unité B n'est pas disponible. Aujourd'hui C est changé (tout changement fera et recompilé) Et le dcu de l'unité C diffère de l'unité C utilisé par l'unité B, de sorte que l'unité B doit être recompilé. Mais malheureusement, la source n'est pas disponible pour le compilateur donne.
Il n'est pas tout à fait clair ce qui est erroné avec votre situation.
Vous avez un framework de test des liens vers les plugins. Alors, où puis-unité de X et Y adapter et de vous faire reconnaître le modèle illustré ci-dessus?
Mais le fait qu'une construction complète résout le problème de l'indication dans ce sens. Et ce n'est pas la première fois que j'ai vu des problèmes avec partielle recompile. J'ai donc toujours utiliser la version complète.
OriginalL'auteur Toon Krijthe
Je déteste ce problème. Je trouve qu'il apparaît chaque maintenant et puis, et bien que cela puisse paraître, dans votre cas, afin d'être directement liées à ce que vous faites avec les plugins, j'ai résolu ce problème dans le passé, en trouvant et en supprimant toutes les dcus, bpls et la collecte de données des paquets que nous avons écrit, puis de reconstruire les paquets.
OriginalL'auteur CodeAndCats
Cela m'arrive très souvent quand j'oublie de changer le DPK Construire de contrôle de si nécessaire à Explicit reconstruire dans Options...|Description.
OriginalL'auteur AlexSC
Comment j'ai résolu le chemin de la folie " dans Delphi XE7:
OriginalL'auteur Rigel
Vérifier que vous n'avez pas tendues du vieux dcu fichier quelque part dans la source dir.
OriginalL'auteur dmajkic
Référence pour l'avenir, simplement en pointant le compilateur de code source des versions du "problème des unités" fixé ce pour moi (c'est à dire en ajoutant les dossiers contenant le code source à la recherche d'un chemin).
OriginalL'auteur Vlad
Certainement quelque chose de buggy avec le compilateur. J'ai trouvé que la modification de l'ordre des unités dans la clause uses va vous permettre d'obtenir "un gratuitement de compilation". Après cela, l'erreur se reproduit et votre retour à la reconstruction. 🙁
OriginalL'auteur Andrew
Dans mon cas, j'ai ajouté les lieux du "problème" des unités à mon projet de recherche de chemin. Tant qu'il pouvait le trouver, il a réunies. Bien sûr, si vous avez plusieurs versions d'un fichier en question, il pourrait compliquer les choses...
OriginalL'auteur B. Clay Shannon
Votre .rmr fichier contient une référence à une version incorrecte de un .pas fichier.
View > Gestionnaire de Projet > développer l'arborescence et examiner le chemin d'accès de toutes les unités.
Il y a un fichier en double dans la liste des chemins de recherche, et de la version incorrecte est trouvé en premier
Bien puis. Désolé, mon pote:)
OriginalL'auteur
Unité ppParameter a été compilé avec une version différente de ppRelatv. TppRelative :
Supprimez tous .dcu dans votre programme /dossier de votre ordinateur, puis re-compiler ou re-construire à nouveau.
Ensuite votre programme fonctionne bien à nouveau.
OriginalL'auteur orsini
Êtes-vous en utilisant une modification de la CLASSIFICATION? Les unités de référence dans votre interface de section également déterminer votre interface. Je suggère de s'assurer que vous n'avez pas de deux versions différentes de l'une de vos unités avec le même nom (y compris VCL/RTL) qui peut être référencé à partir de votre projet. Peut-être que c'est quelque chose de stupide comme arrière-plan de la compilation est à l'aide d'une version différente des unités de disque de compilation. Édition donc, il déclenche l'arrière-plan du compilateur, les dégâts, puis en haut de la synchronisation.
OriginalL'auteur Jim McKeeth
Pour moi le problème que j'ai installé Delphi avec un minimum de composants requis. Et quand j'ai ouvert un projet qui a été compilé avec plein de Delphes de l'installation, il m'est arrivé. Adaptation les fichiers dans le "Source" dans le dossier Delphi dossier d'installation à partir d'une autre machine avec plein de Delphi installation résolu mon problème.
OriginalL'auteur Sharon
mon cas et la solution:
(le projet de dll doit également certaines des applications les fichiers source)
parfois lors de la compilation de la dll fichiers "a été compilé avec une version différente de" problème est survenu
le problème était celui-ci:
App\DCUs
App\Utils
,App\Core
, etc.et nous nous sommes retrouvés avec 2 différents dcu est de la même
*.pas
fichierla solution est simple: supprimer le
App\DCUs
répertoire à partir de la dll du projet de recherche de chemin.OriginalL'auteur TmTron
J'ai juste eu le même message d'erreur en Delphi XE. Le mien a été résolu après la fermeture de Delphes, de l'ouvrir à nouveau et de le recompiler mon projet.
OriginalL'auteur bhreis