gpt4 book ai didi

c# - Delphi dll 函数到 C#

转载 作者:行者123 更新时间:2023-11-30 21:13:44 25 4
gpt4 key购买 nike

对于已编译的 Delphi dll,声明的函数之一是

Mydll.dll

type
TInfo = array [0..255] of byte;

type
public
function GetInfo(Memadr, Infolen: Integer): TInfo;

在 C# 中使用什么 DLLImport 格式?

最佳答案

我会这样做:

德尔福

type
TInfo = array [0..255] of byte;

procedure GetInfo(Memadr, Infolen: Integer; var Result: TInfo); stdcall;

C#

[DllImport(@"testlib.dll")]
static extern void GetInfo(int Memadr, int Infolen, byte[] result);

static void Main(string[] args)
{
byte[] result = new byte[256];
GetInfo(0, result.Length, result);
foreach (byte b in result)
Console.WriteLine(b);
}

您需要获得匹配的调用约定。我选择了 stdcall,这是 P/invoke 的默认值(这就是为什么它没有在 P/invoke 签名中指定)。

我会避免将数组作为函数返回值返回。以这种方式将其编码为参数更容易。

事实上,一般来说,如果你想摆脱固定大小的缓冲区,你可以这样做:

德尔福

procedure GetInfo(Memadr, Infolen: Integer; Buffer: PByte); stdcall;

然后,要填充缓冲区,您需要使用一些指针算法或类似的东西。

关于c# - Delphi dll 函数到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6692177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com