Ver Mensaje Individual
  #9  
Antiguo 16-06-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Amigo, eso cambia las cosas. Evidentemente no puedes exportar un método de una clase si no conoces la definición de la clase. Y aun conociéndola sería difícil, ya que deberías reproducir dicha clase con exactitud. Lo resalto porque esa exactitud ha de ser a nivel de octeto (byte), lo cual es muy difícil conseguir con Delphi.

Para hacerlo es necesario crear una función o procedimiento de molde. Un ejemplo en C++ (compilador desconocido):
Código:
  class TMiClase
  {
  public:
    void Metodo (void) { ; }
  };

  extern "C" TMiClase* CreaObjeto (void) __dlldecl
  {
    return new TMiclase ();
  }

  extern "C" void MoldeAMetodo (TMiClase *Objeto) __dlldecl
  {
    Objeto->Metodo ();
  }

// Etcétera...
Ahora sí, en Delphi:
Código Delphi [-]
UNIT MetodosExportados;

INTERFACE

TYPE
  TMiClase = POINTER;

  FUNCTION CreaObjeto: TMiClase; CDECL; EXTERNAL 'original.dll';
  PROCEDURE MoldeAMetodo (Objeto: TMiClase); CDECL; EXTERNAL 'original.dll';
{ Etcétera... }

IMPLEMENTATION
END.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita