2009-04-18 15 views
12

Ich versuche, 3 Pakete, A, B und C zu bauen. A definiert einige Basisklassen, die in B und C verwendet werden. Ich habe alle 3 von ihnen in der gleichen Projektgruppe , alle so eingerichtet, dass sie an denselben benutzerdefinierten BPL-Ausgabeordner ausgegeben werden. Dieser Ordner befindet sich im Suchpfad für B und C. Aber wenn ich B und C erstelle, drosselt der Compiler die Required-Liste. "Erforderliches Paket 'A' nicht gefunden."Delphi: Erforderliches Paket nicht gefunden

Wie kann ich B und C sagen, wo A zu finden ist, damit sie korrekt erstellt werden?

+1

Überprüfen, um zu sehen, dass auch Superstars wie Sie auf solche Probleme stoßen! (Du hast mir hier oft geholfen). Danke für die klare Frage Post. – Jamo

+1

Ich habe das gleiche Problem. Die Dateien existieren, die Ordner verlassen, die Pfade sind gesetzt. Delphi sagt, dass es kein Paket finden kann. Entweder lehnt es die DCP-Datei, die BPL-Datei oder die Ordner-/Pfadkonfiguration ab. Schön. –

Antwort

14

Entweder das Paket kann nicht gefunden werden, oder der Compiler ist verwirrt. Im letzteren Fall hilft manchmal ein Neustart. Dann ein manuelles Build von allen Paketen in Reihenfolge.

Wenn es wirklich nicht gefunden werden kann, überprüfen Sie, ob alle Paketdateien (bpl und dcp) und dcu verfügbar sind. Du brauchst beides.

+5

Das stellte sich als das Problem heraus. Ich musste ihm auch sagen, wo die DCP-Datei zu finden ist. –

+0

Einmal damit gekämpft. –

+0

dieses Problem jetzt mit einer DCP-Datei, die existiert, aber etwas anderes ist beunruhigend Delphi und es wird nicht lesen die DCP-Datei, keine Menge an Neustart wird helfen, oder neu erstellen. –

1

Ich würde überprüfen, wo Sie die .dcp-Dateien für die Pakete schreiben. Sobald Sie dies haben, überprüfen Sie, ob der Suchpfad jedes Pakets einen Eintrag für den .dcp-Ausgabeordner enthält.

9

Wenn dies geschieht, wenn die IDE versucht, ein Paket zu laden: Ihr Paketausgabeverzeichnis (wo die * .bpl-Dateien gehen) muss auf der PATH-Umgebungsvariablen Ihres Systems sein. Pakete sind statisch verknüpfte DLLs, Windows muss in der Lage sein, sie zu finden, um sie zu laden.

Wenn dies beim Erstellen der Pakete passiert: Alle/alle DCP-Ausgabeverzeichnisse (wohin die * .dcp-Dateien gehen) müssen sich im Suchpfad der abhängigen Projekte befinden, damit der Compiler die kompilierten Pakete finden kann. Sie können auch das DCP-Ausgabeverzeichnis des Paketprojekts leer lassen. In diesem Fall wird das globale DCP-Ausgabeverzeichnis unter Extras \ Optionen \ Bibliothek verwendet. Die abhängigen Projekte müssen sie dann nicht in ihren Suchpfad aufnehmen.

+0

Wow, ein BPL Ordner ist NICHT in deinem Pfad. Die IDE sollte darüber jammern. –

2

Es ist möglich, dass der Name des erforderlichen Pakets in der Klausel 'requires' des zu kompilierenden Pakets falsch angegeben ist. Nehmen wir ein Beispiel:

Wir haben zwei Pakete - VirtualTreesR.dpk und VirtualTreesD.dpk. VirtualTreesD benötigt VirtualTreesR. Beide haben das Suffix '16', so dass beide im Fenster des Delphi-Projektmanagers als VirtualTreesR16.bpl und VirtualTreesD16.bpl angezeigt werden. Sie mögen denken, dass dies die Namen der Pakete sind, aber Sie liegen falsch. Die Namen der Pakete sind immer noch VirtualTreesR und VirtualTreesD, nicht VirtualTreesR16 und VirtualTreesD16.

Wenn VirtualTreesR.dpk kompiliert Delphi erzeugt zwei Dateien (ich rede nicht über DCU hier) VirtualTreesR * * .bpl und VirtualTreesR.dcp. Sieh den Unterschied?

Dann versuchen wir, VirtualTreesD.dpk zu kompilieren und den Fehler zu erhalten: "[DCC Fatal Error] VirtualTreesD.dpk (35): E2202 Erforderliches Paket 'VirtualTreesR16' nicht gefunden".

Der Fehler tritt auf, weil die ‚erfordert‘ -Klausel des VirtualTreesD.dpk Pakets enthält die folgenden Zeilen:

 

    requires 
     designide, 
     VirtualTreesR16; 
 

Delphi versucht VirtualTreesR16.dcp zu finden und nicht, auch wenn der Delphi-Suchpfad und die PATH-Umgebung Variable sind korrekt gesetzt, da es keine VirtualTreesR16.dcp gibt. Nur VirtualTreesR.dcp.

Die Lösung ist die ‚erfordert‘ -Klausel zu beheben, so dass es unten wie das aussehen:

 

    requires 
     designide, 
     VirtualTreesR; 
 

Hoffe, es hilft.

P.S. Dies ist ein ziemlich frustrierendes Problem, da dieser Namenskonflikt nicht offensichtlich ist und seine Fragmente über verschiedene Einstellungen verstreut sind. Delphi könnte spezifischer sein, wenn es spezifiziert, welche Datei genau es zu finden versucht hat (z.B. 'VirtualTreesR.dcp' anstelle von 'VirtualTreesR').

0

Ich erhalte manchmal den Fehler "Paket nicht gefunden", wenn ich die erforderlichen Pakete über das Kontextmenü des Delphi-Projektmanagers hinzufüge. (Öffnen Sie ein Paket, klicken Sie rechts „Benötigt“, wählen Sie „Add Reference ...“ Befehl)

Stattdessen ist es einfacher, das gewünschte Paket manuell hinzuzufügen, indem Sie die Paket-Projektdatei:

  1. das Paket auswählen im Projektmanager. MyPackage.bpl zum Beispiel.
  2. Ctrl+V, um die Projektdatei zu öffnen.
  3. Fügen Sie der requirements-Klausel das erforderliche Paket hinzu.
  4. Sicherstellen, dass das erforderliche Paket * .DCP-Datei im Paketsuchpfad enthalten ist.
Verwandte Themen