Yon*_*ona 6 c# delphi pinvoke interop bytearray
我无法确定让delphi函数在.net的字节数组上运行的最佳方法.
delphi签名如下所示:
procedure Encrypt(
var Bytes: array of byte;
const BytesLength: Integer;
const Password: PAnsiChar); stdcall; export;
Run Code Online (Sandbox Code Playgroud)
C#代码如下所示:
[DllImport("Encrypt.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi)]
public static extern void Encrypt(
ref byte[] bytes,
int bytesLength,
string password);
Run Code Online (Sandbox Code Playgroud)
省略var
和ref
在字节数组声明之前似乎失败了,但它是否需要,因为我只更改数组的内容而不是数组本身?
另外,由于某些原因,我似乎无法在delphi中获取数组的长度,如果我删除BytesLength
参数而Length(Bytes)
不是工作,如果我添加BytesLength
参数,Length(Bytes)
开始工作但是BytesLength
有一个错误的值.
将 Delphi 的第一个参数设置Encrypt
为Bytes: PByte
,然后就可以开始了。
正如您所拥有的,开放数组期望传递指向第一个元素的指针和解释您在问题中描述的内容的长度。
归档时间: |
|
查看次数: |
2272 次 |
最近记录: |