如何用Delphi代码编写?
[DllImport("FT_ND_API.dll")]
public static extern uint epas_CreateContext(out IntPtr hContextHandle,
uint ulFlags, uint ulApiVersion);
[DllImport("FT_ND_API.dll")]
public static extern uint epas_OpenDevice(IntPtr hContextHandle,
uint ulQueryType, IntPtr pQueryData);
[DllImport("FT_ND_API.dll")]
public static extern uint epas_GetProperty(IntPtr hContextHandle, uint ulFlags,
IntPtr pRefData, byte[] pPropData, uint ulPropSize);
[DllImport("FT_ND_API.dll")]
public static extern uint epas_CreateDir(IntPtr hContextHandle, uint ulFlags,
String pucName, String pucGuid, ref WDirInfo pDirInfo, uint ulSizeOfDirInfo);
答案 0 :(得分:5)
像这样:
function epas_CreateContext(
out hContextHandle: NativeInt;
ulFlags: Cardinal;
ulApiVersion: Cardinal
): Cardinal; stdcall; external 'FT_ND_API.dll';
function epas_OpenDevice(
hContextHandle: NativeInt;
ulQueryType: Cardinal;
pQueryData: IntPtr
): Cardinal; stdcall; external 'FT_ND_API.dll';
function epas_GetProperty(
hContextHandle: NativeInt;
ulFlags: Cardinal;
pRefData: NativeInt;
pPropData: PByte;
ulPropSize: Cardinal
): Cardinal; stdcall; external 'FT_ND_API.dll';
function epas_CreateDir(
hContextHandle: NativeInt;
ulFlags: Cardinal;
pucName: PAnsiChar;
pucGuid: PAnsiChar;
var pDirInfo: WDirInfo;
ulSizeOfDirInfo: Cardinal
): Cardinal; stdcall; external 'FT_ND_API.dll';
注意:
IntPtr
是指针大小的整数。在Delphi中NativeInt
。uint
是一个无符号的32位整数,在Delphi中是Cardinal
。string
被编组为C字符串,指向以null结尾的字符串的指针。由于未指定CharSet
,因此使用默认值CharSet.Ansi
。这是Delphi中的PAnsiChar
。CallingConvention
,因此默认值CallingConvention.StdCall
适用。所以,这是Delphi中的stdcall
。byte[]
是一个字节数组。那被编组为指向数组第一个字节的指针。所以,在Delphi中PByte
。WDirInfo
翻译成Delphi。看起来它可能是一个结构。使用C ++头文件而不是p / invoke声明可能会更好。最好使用接口定义的原始来源。