【发布时间】:2011-08-03 21:15:22
【问题描述】:
我无法找出让 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 参数,@987654328 @ 开始工作,但 BytesLength 的值错误。
【问题讨论】:
标签: c# delphi interop pinvoke bytearray