【发布时间】:2010-07-12 18:46:48
【问题描述】:
在 Delphi 中,我有这样的结构:
TCustomerInfo = Packed Record
CustomerNo: Integer;
FirstName: String[50];
LastName: String[50];
End;
使用这样的虚拟进程:
procedure GetCustomer(CustomerNo: Integer; var CustomerInfo: TCustomerInfo);
begin
CustomerInfo.CustomerNo := 19901;
CustomerInfo.FirstName := 'JOHN';
CustomerInfo.LastName := 'DOE';
end;
在 C# 中我有这个:
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=1)]
struct CUSTOMER_INFO
{
public Int32 CustomerNo;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=50)]
public string FirstName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=50)]
public string LastName;
}
使用这样的导入 Delphi 函数:
[DllImport("Exceline.dll")]
extern static void GetCustomer(Int32 CustomerNo, ref CUSTOMER_INFO CustomerInfo);
这个想法是确保所有内存分配和存储都由 C# 应用程序处理。
我的问题是,从 GetCustomer 返回时,没有任何内容分配给我的 C# 结构:-/
【问题讨论】:
标签: c# delphi interop delphi-7