He oído que "BPL es un tipo especial de DLL", pero no esperaba que esta oración tenga tan gran importancia. Recientemente vi a alguien escribiendo declaraciones de exportación en una unidad perteneciente a un determinado DPK, y me sorprendió mucho. Pero mirando la ayuda de Delphi, todo relacionado con la exportación son bibliotecas. Leí "Análisis del código fuente de Delphi" hoy y luego aprendí el significado de la oración anterior. Por lo tanto, existen las siguientes inferencias:
Para proyectos DLL, las exportaciones se pueden escribir en archivos de proyecto o unidad, sin diferencia.
BPL es una especie de DLL.
Las exportaciones anteriores son normales.
De hecho, según la declaración en "Análisis del código fuente de Delphi", BPL solo agrega algunas características sobre la base de DLL, como verificar la unidad duplicada. El sistema operativo considera que BPL y DLL son el mismo tipo de archivos. Y el libro da el resultado TDump para el BPL más simple:
Paquete NullPackage;
Requerimiento
rtl;
fin.
E:/ls> tdump -m -ea: v nullpackage.bpl
Exportaciones de NullPackage.BPL
7 Nombre (s) exportado, 7 Direcciones de exportación (s).
Ordenado por RVA:
RVA Ord.
-------------------------------------------------- -------------------------------------------------- ----------------------------
0000124C 1 0006 @getpackageInfotable
0000124C 2 0003@nullpackage @@ getpackageInfotable $ QQRV
00001254 3 0002@nullpackage @@ packageload $ qqrv
00001254 7 0005 Inicializar
00001260 4 0001@nullpackage @@ paquete de paquete $ qqrv
00001260 6 0004 Finalizar
0000126C 5 0000 @nullpackage @inicialización $ QQRV
¿Has visto varias funciones apuntando a la misma dirección? Esto es probablemente lo que significan las exportaciones.
Fuera del tema: Google no es fácil de usar hoy, así que tuve que usar Baidu, pero me llevó mucho tiempo no tener resultados. Obtuve Google por la tarde y busqué y encontré lo que necesitaba de inmediato. Parece que Baidu todavía no puede hacerlo.