Para objetos específicos de encapsulación DLL, consulte la "Encapsulación DLL de DLL y la tecnología de objetos de llamada de Liu Yi en Delphi" y el código fuente para el libro.
Encontré algunos problemas extraños en el proceso de compilar DLL usando Delphi.
1. El proyecto DLL generado por Delphi escribe: Sharemem debe ser la primera unidad en la cláusula de usos de su biblioteca y el de su proyecto. Se menciona aquí que tanto los proyectos de DLL como los proyectos que utilizan la DLL necesitan hacer referencia a la unidad Sharemem.
Es mejor agregar unidades Sharemem al proyecto, porque en el uso real, se encuentra que a veces se pasan los objetos entre el proyecto y la DLL para usar.
2. Problema de definición de la función DLL llamado:
Cuando se emite en dll: function ABC: iinterface;
Las llamadas de funciones se definen de la siguiente manera en el programa:
tipo
Tfunc = function: iinterface;
Se producirá un error extraño, que debe definirse como el mismo que el definido en la DLL:
tipo
Tfunc = función: iinterface;
3. Cuando use la interfaz en la DLL, recuerde establecerla en nil antes de que el objeto se libere en la DLL después de usar;
4. DLLS DEPURACIÓN EN Delphi: a menudo encuentro el problema de que no puedo agregar puntos de interrupción al depurar DLL. Verifique la configuración en la DLL, si la ruta de salida de la DLL compilada es la misma que la configuración de la ruta del programa principal que llama a la DLL, y debe ser una ruta absoluta;
5. En "DLL encapsulación y tecnología de objetos de llamada en Delphi", la principal limitación de DLL en los objetos de encapsulación es
?
2. . .
3. . .
Parece que no hay tal restricción sobre cómo usar objetos en el programa principal para DLL, me pregunto por qué.