Tanto el la dll como en el código que la usa, las convenciones de paso de parámetros deben ser idénticas, normanlmente se toma
stdcall. La función de la dll debe ser
exportada para que sea visible desde la misma por otras aplicaciones que la usen.
Código Delphi
[-]
library MiDll;
function MiFuncion(): Integer; stdcall;
begin
end;
..........................
exports
MiFunción;
begin
end.
Desde C++ podemos importar la función dinámica o estáticamente.
Código Delphi
[-]
typedef int __stdcalll(*pMiFuncion) ();
HINSTANCE hDll = LoadLibrary("MiDll.dll");
pMiFuncion MiFunción = (pMiFuncion)GetProcAddress(hDll, "MiFuncion");
if(MiFunon)
int R = MiFuncion;
Saludos.