Вызов функции delphi dll из C # с передачей байтового массива

У меня возникли проблемы с определением наилучшего способа работы функции delphi с байтовым массивом из .net.

Сигнатура delphi выглядит так:

procedure Encrypt(
    var Bytes: array of byte;
    const BytesLength: Integer;
    const Password: PAnsiChar); stdcall; export;

Код C # выглядит так:

[DllImport("Encrypt.dll",
    CallingConvention = CallingConvention.StdCall,
    CharSet = CharSet.Ansi)]
public static extern void Encrypt(
    ref byte[] bytes,
    int bytesLength,
    string password);

Пропуск var и ref перед объявлением байтового массива, казалось, не удалось, но требуется ли это, поскольку Я буду изменять только содержимое массива, а не сам массив?

Кроме того, по какой-то причине я не могу получить длину массива в delphi, если я удалю BytesLength параметр Length (Bytes) не будет работать, если я добавлю параметр BytesLength , Length (Bytes) начнет работать, но BytesLength ] имеет неправильное значение.

6
задан Yona 3 August 2011 в 21:15
поделиться