J'ai une dll delphi qui est défini comme celui-ciL'appel d'une DLL Delphi de C# contenant Pointer à struct ne fonctionne pas
type
tSSL_connect = packed record
pssl : Pointer;
pctx : Pointer;
sock : Integer;
end;
function SSLCLT_Connect(pIPAddr: PChar;
iPort: Integer;
var pConn: tSSL_connect;
iTimeout: Integer;
bEnableNonBlockingMode: BOOL = TRUE): BOOL;
stdcall; external cltdll;
Je me suis converti en C# comme ceci:
[StructLayout(LayoutKind.Sequential,CharSet = CharSet.Ansi, Pack=1)]
public unsafe struct tSSL_connect
{
public IntPtr pssl;
public IntPtr pctx;
public UInt32 sock;
};
[DllImport("cltdll.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public static extern bool SSLCLT_Connect(string pIPAddr, UInt32 iPort, ref tSSL_connect pConn, UInt32 iTimeout, bool bEnableNonBlockingMode);
L'appel est comme ceci:
tSSL_connect conn = new tSSL_connect();
btest = SSLCLT_Connect("127.0.0.1", 3858, ref conn, 1500, false);
Il demande d'ouvrir un canal et l'écrit dans conn. Renvoie false. Donc je ne peux pas passer à travers. Les objets conn renvoient null. Je sais que le serveur reçoit mon appel.
Je pense que cela a quelque chose à voir avec la structure C# qui a un mauvais type. Je suis assez nouveau pour les choses non gérées, donc si quelqu'un peut aider à passer à travers.
Je n'ai que la DLL. Merci