Ver Mensaje Individual
  #5  
Antiguo 01-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Reputación: 20
basti Va por buen camino
Un ejemplo suma:

La función en la dll escrita en C:

Código:
extern "C" __declspec(dllexport)
int WINAPI Suma (int a, int b)
{
	return a + b;
}
El extern "C", es para que se exporte la función con el mismo nombre (en este caso Suma).

Ahora el código Delphi:

Código Delphi [-]

function Suma(a, b : integer) : integer; stdcall; external 'dlldondeestasuma.dll'  name 'Suma'; 
// name es opcional, sólo haría falta si el nombre en delphi y en C fuesen distintos. 
// stdcall indica que la llamada no se hace en el formato Delphi, sino en el formato C (el usado por la mayoría de los lenguajes)



// llamada a la función
var
  n : integer;

begin
  n := Suma(3, 2);
end.

Esto vale para variables enteras, float o similares. Pero no para cadenas, ya que hay que mandarlas como Pchar, que es el formato que usa C. Los arrays o estructuras de datos se pueden enviar como punteros.
Responder Con Cita