Ouvi dizer que "a BPL é um tipo especial de DLL", mas eu não esperava que essa frase tivesse um significado tão grande. Recentemente, vi alguém escrevendo declarações de exportação em uma unidade pertencente a um certo DPK, e fiquei muito surpreso. Mas, olhando para a ajuda de Delphi, todos relacionados à exportação são bibliotecas. Li "Delphi Source Code Analysis" hoje e aprendi o significado da frase acima. Portanto, existem as seguintes inferências:
Para projetos de DLL, as exportações podem ser gravadas em arquivos de projeto ou unidade, sem diferença.
BPL é um tipo de DLL.
As exportações acima são normais.
De fato, de acordo com a declaração em "Análise de código -fonte Delphi", a BPL adiciona apenas alguns recursos com base na DLL, como a verificação da unidade duplicada. O sistema operacional considera BPL e DLL como o mesmo tipo de arquivos. E o livro fornece o resultado do TDUMP para o BPL mais simples:
pacote nullpackage;
Requer
rtl;
fim.
E:/ls> tdump -m -ea: v nullpackage.bpl
Exportações de Nullpackage.bpl
7 Nome (s) exportado (s), 7 Endereço (s) de exportação (s).
Classificado 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 @@ packageUnload $ qqrv
00001260 6 0004 finalizar
0000126C 5 0000 @nullpackage @inicialização $ qqrv
Você já viu várias funções apontando para o mesmo endereço? Provavelmente é isso que significa exportações.
Off Topic: o Google não é fácil de usar hoje, então tive que usar o Baidu, mas demorou muito tempo para não obter resultados. Peguei o Google à tarde e pesquisei e encontrei o que eu precisava imediatamente. Parece que o Baidu ainda não pode fazer isso.