2009-04-18 16 views
12

Estoy tratando de compilar 3 paquetes, A, B y C. A define algunas clases base que se usan en B y C. Tengo los 3 en el mismo grupo de proyectos , todo configurado para dar salida a la misma carpeta de salida BPL personalizada. Esta carpeta está en la ruta de búsqueda para B y C. Pero cuando voy a compilar B y C, el compilador se ahoga en la lista de Requiere. "Paquete requerido 'A' no encontrado."Delphi: paquete requerido no encontrado

¿Cómo le digo a B y C dónde encontrar A para que se compilen correctamente?

+1

Validando para ver que incluso las superestrellas como usted se topan con problemas como este. (Me has ayudado muchas veces aquí). Gracias por la clara pregunta. – Jamo

+1

Estoy teniendo el mismo problema. Los archivos existen, las carpetas salen, las rutas están establecidas. Delphi dice que no puede encontrar un paquete. O no le gusta el archivo DCP, el archivo BPL o la configuración de carpeta/ruta. Encantador. –

Respuesta

14

O no se encuentra el paquete o el compilador está confundido. En el caso posterior, un reinicio a veces ayuda. Luego una compilación manual de todos los paquetes en orden.

Si realmente no se puede encontrar, verifique si todos los archivos de paquete (bpl y dcp) y dcu están disponibles. Necesitas ambos.

+5

Ese resultó ser el problema. Necesitaba decirle dónde encontrar el archivo DCP también. –

+0

Luchado con eso una vez. –

+0

que tiene este problema ahora con un archivo DCP que existe, pero algo más está desestabilizando delphi y no leerá el archivo DCP, ninguna cantidad de reinicio ayudará o reconstruirá. –

1

Verificaría para asegurarse de que está escribiendo los archivos .dcp para los paquetes. una vez que tenga esto, verifique que la ruta de búsqueda de cada paquete tenga una entrada para la carpeta de salida .dcp.

9

Si esto ocurre cuando el IDE intenta cargar un paquete: el directorio de salida del paquete (donde van los archivos * .bpl) tiene que estar en la variable de entorno PATH de su sistema. Los paquetes son archivos DLL enlazados estáticamente, Windows tiene que poder encontrarlos para cargarlos.

Si esto sucede al compilar los paquetes: cualquiera/todos sus directorios de salida DCP (donde van los archivos * .dcp) deben estar en la ruta de búsqueda de los proyectos dependientes para que el compilador pueda encontrar los paquetes compilados. También puede dejar el directorio de salida DCP del proyecto de paquete vacío, en cuyo caso se utiliza el directorio de salida global DCP en Herramientas \ Opciones \ Biblioteca; los proyectos dependientes no necesitan incluirlo en su ruta de búsqueda.

+0

Guau, una carpeta BPL NO está en su camino. El IDE debería quejarse sobre esto. –

2

Es posible que el nombre del paquete requerido esté incorrectamente especificado en la cláusula 'requires' del paquete que está intentando compilar. Tomemos un ejemplo:

Tenemos dos paquetes: VirtualTreesR.dpk y VirtualTreesD.dpk. VirtualTreesD requiere VirtualTreesR. Ambos tienen el sufijo '16', por lo que ambos se muestran en la ventana del administrador del proyecto Delphi como VirtualTreesR16.bpl y VirtualTreesD16.bpl. Puede pensar que estos son los nombres de los paquetes, pero está equivocado. Los nombres de los paquetes siguen siendo VirtualTreesR y VirtualTreesD, no VirtualTreesR16 y VirtualTreesD16.

Cuando se compila VirtualTreesR.dpk Delphi produce dos archivos (no me refiero a DCU aquí) VirtualTreesR * 16 * .bpl y VirtualTreesR.dcp. ¿Ver la diferencia?

Luego intentamos compilar VirtualTreesD.dpk y obtener el error: "[DCC Fatal Error] VirtualTreesD.dpk (35): E2202 Paquete necesario 'VirtualTreesR16' no encontrado".

El error ocurre porque el 'requiere' cláusula del paquete VirtualTreesD.dpk contiene las siguientes líneas:

 

    requires 
     designide, 
     VirtualTreesR16; 
 

Delphi trata de encontrar VirtualTreesR16.dcp y falla incluso si la ruta de búsqueda de Delphi y el medio ambiente PATH variable están configuradas correctamente porque no hay VirtualTreesR16.dcp. Solo VirtualTreesR.dcp.

La solución es fijar la cláusula 'requiere' lo que se verá como la siguiente:

 

    requires 
     designide, 
     VirtualTreesR; 
 

espero que ayude.

P.S. Esto es un problema bastante frustrante porque este desajuste de nombre no es obvio y sus fragmentos están dispersos en diferentes configuraciones. Delphi podría ser más específico si especificara qué archivo exactamente trató de encontrar (por ejemplo, 'VirtualTreesR.dcp' en lugar de 'VirtualTreesR').

0

A veces recibo el error "paquete no encontrado" cuando agrego paquetes requeridos a través del menú contextual Delphi Project Manager. (Abrir un paquete, haga clic derecho "Requiere", elegir la opción "Agregar referencia ..." comando)

En su lugar, es más fácil añadir el paquete requerido mediante la edición del archivo de proyecto paquete manualmente:

  1. Seleccione el paquete en el Administrador de proyectos. MyPackage.bpl por ejemplo.
  2. Ctrl+V para abrir el archivo del proyecto.
  3. Agregue el paquete requerido a la cláusula requires.
  4. Asegúrese de que el paquete requerido * .DCP se encuentre en la ruta de búsqueda del paquete.