2009-04-18 17 views
12

Sto provando a compilare 3 pacchetti, A, B e C. A definisce alcune classi base utilizzate in B e C. Ne ho tutte e 3 nello stesso gruppo di progetto , tutti impostati per l'output nella stessa cartella di output BPL personalizzata. Questa cartella si trova nel percorso di ricerca per B e C. Ma quando vado a compilare B e C, il compilatore si strozza nella lista Richieste. "Pacchetto richiesto 'A' non trovato."Delphi: pacchetto richiesto non trovato

Come si dice a B e C dove trovare A in modo che vengano compilati correttamente?

+1

Convalida per vedere che anche le superstar come te si imbattono in problemi come questo! (Mi hai aiutato molte volte qui). Grazie per la chiara domanda posta. – Jamo

+1

Ho lo stesso problema. I file esistono, le cartelle escono, i percorsi sono impostati. Delphi dice che non riesce a trovare un pacchetto. O non piace il file DCP, il file BPL o la configurazione della cartella/percorso. Bello. –

risposta

14

O il pacchetto non può essere trovato o il compilatore è confuso. Nel caso successivo, un riavvio a volte aiuta. Quindi una build manuale da tutti i pacchetti in ordine.

Se davvero non può essere trovato, controllare se tutti i pacchetti (bpl e dcp) e file dcu sono disponibili. Hai bisogno di entrambi.

+5

Questo risultò essere il problema. Dovevo dirgli dove trovare anche il file DCP. –

+0

Lottato con quello una volta. –

+0

avendo questo problema ora con un file DCP che esiste ma qualcos'altro è sconvolgente delphi e non leggerà il file DCP, nessuna quantità di riavvio aiuterà o ricostruirà. –

1

Vorrei verificare per sapere dove si stanno scrivendo i file .dcp per i pacchetti. una volta che hai questo, controlla che il percorso di ricerca di ogni pacchetto abbia una voce per la cartella di output .dcp.

9

Se ciò accade quando l'IDE sta tentando di caricare un pacchetto: la directory di output del pacchetto (dove vanno i file * .bpl) deve trovarsi nella variabile d'ambiente PATH del sistema. I pacchetti sono DLL collegate staticamente, Windows deve essere in grado di trovarli per caricarli.

Se ciò accade durante la creazione dei pacchetti: qualsiasi/tutte le directory di output DCP (dove vanno i file * .dcp) devono trovarsi nel percorso di ricerca dei progetti dipendenti in modo che il compilatore possa trovare i pacchetti compilati. È inoltre possibile lasciare vuota la directory di output DCP del progetto del pacchetto, nel qual caso viene utilizzata la directory di output DCP globale impostata in Strumenti \ Opzioni \ Libreria; i progetti dipendenti quindi non hanno bisogno di includerlo nel loro percorso di ricerca.

+0

Wow, una cartella BPL NON sul tuo percorso. L'IDE dovrebbe lamentarsi di questo. –

2

È possibile che il nome del pacchetto richiesto sia specificato in modo errato nella clausola 'require' del pacchetto che si sta tentando di compilare. Facciamo un esempio:

Abbiamo due pacchetti: VirtualTreesR.dpk e VirtualTreesD.dpk. VirtualTreesD richiede VirtualTreesR. Entrambi hanno il suffisso "16", quindi entrambi vengono visualizzati nella finestra del project manager di Delphi come VirtualTreesR16.bpl e VirtualTreesD16.bpl. Potresti pensare che questi siano i nomi dei pacchetti, ma ti sbagli. I nomi dei pacchetti sono ancora VirtualTreesR e VirtualTreesD, non VirtualTreesR16 e VirtualTreesD16.

Quando VirtualTreesR.dpk viene compilato Delphi produce due file (io non parlo di DCU qui) VirtualTreesR * * .bpl e VirtualTreesR.dcp. Vedi la differenza?

Quindi tentiamo di compilare VirtualTreesD.dpk e ottenere l'errore: "[Errore irreversibile DCC] VirtualTreesD.dpk (35): E2202 Pacchetto richiesto 'VirtualTreesR16' non trovato".

l'errore si verifica perché il 'richiede' clausola del pacchetto VirtualTreesD.dpk contiene le seguenti righe:

 

    requires 
     designide, 
     VirtualTreesR16; 
 

Delphi cerca di trovare VirtualTreesR16.dcp e fallisce anche se il percorso di ricerca Delphi e l'ambiente PATH le variabili sono impostate correttamente perché non esiste VirtualTreesR16.dcp. Solo VirtualTreesR.dcp.

La soluzione è quella di fissare la 'necessita' clausola in modo che sarà simile a quello qui sotto:

 

    requires 
     designide, 
     VirtualTreesR; 
 

Speranza che aiuta.

P.S. Questo è un problema abbastanza frustrante perché questa mancata corrispondenza di questo nome non è ovvia e i suoi frammenti sono sparsi in diverse impostazioni. Delphi potrebbe essere più specifico se specificasse quale file esattamente ha cercato di trovare (ad esempio "VirtualTreesR.dcp" invece di "VirtualTreesR").

0

A volte viene visualizzato l'errore "pacchetto non trovato" quando si aggiungono pacchetti richiesti tramite il menu di scelta rapida di Delphi Project Manager. (Aprire un pacchetto, fare clic destro "richiede", scegliere "Add Reference ..." comando)

Invece è più facile aggiungere il pacchetto richiesto modificando il file di progetto pacchetto manualmente:

  1. selezionare il pacchetto nel Project Manager. MyPackage.bpl per esempio.
  2. Ctrl+V per aprire il file di progetto.
  3. Aggiungere il pacchetto richiesto alla clausola richiede.
  4. Verificare che il pacchetto richiesto * .DCP sia nel percorso di ricerca del pacchetto.
Problemi correlati