А>Вопросы:
А>1. как привязать ету функции в Delphi к DLL и как правильно их использовать?
А>3. Как правильно обьявить LoginCryptObj?
Вот пример со статической линковкой библиотеки
INTERFACE
type
pLoginCryptInfo = ^TLoginCryptInfo;
TLoginCryptInfo = record
pseed :cardinal;
k1 :cardinal;
k2 :cardinal;
m_key :array [0..1] of cardinal;
m_k1 :array [0..1] of cardinal;
m_k2 :array [0..1] of cardinal;
end;
T62bytes = array[0..61] of byte;
p62bytes = ^T62bytes;
//extern "C" void LoginCryptInit(LoginCryptObj *obj);
procedure LoginCryptInit( ALoginCryptObj :pLoginCryptInfo); cdecl;
//extern "C" void LoginCryptEncrypt(LoginCryptObj *obj, unsigned char *in, unsigned char *out, int len);
procedure LoginCryptEncrypt( ALoginCryptObj :pLoginCryptInfo; Ain, Aout :pchar; Alen :integer); cdecl;
//extern "C" int CalculateKeys(
//BYTE Plaintext[62], BYTE Ciphertext[62], unsigned int *LoginSeed,
//unsigned int *ClientLoginKey1, unsigned int *ClientLoginKey2);
function CalculateKeys(
APlaintext, ACiphertext : T62bytes;
ALoginSeed, AClientLoginKey1, ClientLoginKey2 :pcardinal) :integer; cdecl;
IMPLEMENTATION
const dllname = 'твоя_длл.dll';
procedure LoginCryptInit; external dllname name 'LoginCryptInit';
procedure LoginCryptEncrypt; external dllname name 'LoginCryptEncrypt';
function CalculateKeys; external dllname name 'CalculateKeys';
Возможные проблемы:
1. Падает при старте — возможно, не находит длл или функцию в длл. Название ф-ции нужно пишать, точно соблюдая регистр. (Чаще не падает, а пишет по-человечески, кстати

2. Насчёт cdecl я не уверен. Вполне может быть stdcall или ещё что-нить из соответствующего раздела хелпа Дельфи. Диагностика проблемы — как обычно — по частым падениям при вызовах ф-ций длл-ки.
3. T62bytes в третьей вполне возможно придётся заменить на p62bytes (или на pointer).
4. Можно попробовать загружать длл-ку динамически — через LoadLibrary. Но это бОльший гемор
5. Может быть, нужно packed record для TLoginCryptInfo... (маловероятно)
А>2. Sharemem нужен?
Если твоя длл-ка написана на C, то определённо не нужен.
Sharemem нужен, если ты пишешь длл-ку на Дельфи и намерен передавать параметры типа string (чего нормальные люди не делают, то есть она вообще не нужна).
А>4. Что еще необходимо?
Терпение