Para objetos específicos de encapsulamento de DLL, consulte o "encapsulamento da DLL de Liu Yi e ligue para a tecnologia de objetos em Delphi" e o código -fonte do livro.
Encontrei alguns problemas estranhos no processo de compilação de DLLs usando o Delphi.
1. O projeto DLL gerado por Delphi escreve: Sharemem deve ser a primeira unidade da cláusula de usos da sua biblioteca e do seu projeto. É mencionado aqui que projetos de DLL e projetos usando a DLL precisam fazer referência à unidade Sharemem.
É melhor adicionar unidades Sharemem ao projeto, porque, no uso real, verifica -se que, às vezes, os objetos são passados entre o projeto e a DLL para usar.
2. Problema de definição de chamada DLL Função:
Quando a saída na dll: função abc: iinterface;
As chamadas de função são definidas da seguinte forma no programa:
tipo
Tfunc = função: iInterface;
Um erro estranho ocorrerá, que deve ser definido como o mesmo que o definido na DLL:
tipo
Tfunc = função: iInterface;
3. Ao usar a interface na DLL, lembre -se de defini -la como nulo antes que o objeto seja liberado na DLL após o uso;
4. DLLs de depuração em Delphi: muitas vezes encontro o problema que não posso adicionar pontos de interrupção ao depurar DLLs. Verifique as configurações na DLL, se o caminho de saída da DLL compilada é o mesmo que a configuração principal do caminho do programa que chama a DLL e deve ser um caminho absoluto;
5. Em "Encapsulamento de DLL e Chamada de Tecnologia de Objetos em Delphi", a principal limitação da DLL nos objetos de encapsulamento é
?? 1. O aplicativo chamando a DLL só pode usar o método de ligação dinâmica do objeto
2. . .
3. . .
Parece não haver tal restrição sobre como usar objetos no programa principal para DLLs, eu me pergunto por quê?