Una pregunta, ¿La declaración no debería "cuadrar" en los parámetros con la implementación?
Algo así:
Código Delphi
[-]
function Sumar(x,y:integer):Integer; stdcall; external 'sumas.dll';
Implementación:
Código Delphi
[-]
function Sumar(x,y:integer):Integer; stdcall;
begin
ShowMessage (Format('1-Sumando %d+%d=%d',[x,y,(x+y)]));
Result := x+y;
end;