C 中的DLL C#中如何调用?
C :
int PubStrToIso ( char * pcSourceStr, int nStrLen, ISODataStru * TargetIsoStru, int *pnPosition)
C#:
结构定义:
private delegate int FIELD_PACKAGER_PACK (ISO_FIELD_DEF pthis, byte pfieldbuf, short fieldlen, byte poutdata);
private delegate int FIELD_PACKAGER_UNPACK(ISO_FIELD_DEF pthis, byte pfieldbuf, short fieldlen, byte poutdata);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
struct ISO_FIELD_DEF
{
short len; /* 数据域最大长度 */
LENGTH_TYPE lentype; /* 数据域长度类型: 1--LLVAR型 2--LLLVAR型 */
ALIGN_TYPE align; /* 对齐类型 */
char padchar; /* 补齐字符 */
FIELD_PACKAGER_PACK pack; /* 打包函数指针 */
FIELD_PACKAGER_UNPACK unpack; /* 解包函数指针 */
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
struct ISO_FIELD
{
short len;
short off; /* 指向iso->databuf缓冲区的偏移,数据中不含长度类型的几个字节 */
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct ISODataStru
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2560)]
ISO_FIELD []fld;
char []bitmap;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_MSG_LEN+MAX_MSG_LEN)]
byte []databuf; /* 多留一个域的长度,防止溢出 */
short used;
};
如何定义、使用 以上函数? ( PubStrToIso ) ?
万分感谢!