如下为dll中的原代码:
struct HY_RECT_S
{
long lLeft;
long lRight;
long lTop;
long lBottom;
}; struct ID_CARD_S
{
char szText[10][256];
HY_RECT_S idRect[10];
};函数:
long __stdcall Get_IdcData(int iCardType, char* szFileNameIn, char *szFullFileNameOut, char *szHeadFileNameOut, ID_CARD_S* pstOut);
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、我是这么定义的:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct HY_RECT_S
{
public long lLeft;
public long lRight;
public long lTop;
public long lBottom;
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct ID_CARD_S
{
[MarshalAs(UnmanagedType.ByValArray,SizeConst=2560)]
public byte[,] szText;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public HY_RECT_S[] idRect;
} [DllImport("IDRCore.dll", EntryPoint = "Get_IdcData", CharSet = CharSet.Ansi)]
public static extern int Get_IdcData(int iCardType, string szFileNameIn, string szFullFileNameOut, string szHeadFileNameOut, ref ID_CARD_S pstOut);
执行函数:
Get_IdcData(iCardType, szFileNameIn, szFullFileNameOut, szHeadFileNameOut, ref pId_Card) 是成功的,但去不到pId_Card的值出来,忙了好久了,都没搞定,希望大家来帮帮忙!!!
struct HY_RECT_S
{
long lLeft;
long lRight;
long lTop;
long lBottom;
}; struct ID_CARD_S
{
char szText[10][256];
HY_RECT_S idRect[10];
};函数:
long __stdcall Get_IdcData(int iCardType, char* szFileNameIn, char *szFullFileNameOut, char *szHeadFileNameOut, ID_CARD_S* pstOut);
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、我是这么定义的:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct HY_RECT_S
{
public long lLeft;
public long lRight;
public long lTop;
public long lBottom;
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct ID_CARD_S
{
[MarshalAs(UnmanagedType.ByValArray,SizeConst=2560)]
public byte[,] szText;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public HY_RECT_S[] idRect;
} [DllImport("IDRCore.dll", EntryPoint = "Get_IdcData", CharSet = CharSet.Ansi)]
public static extern int Get_IdcData(int iCardType, string szFileNameIn, string szFullFileNameOut, string szHeadFileNameOut, ref ID_CARD_S pstOut);
执行函数:
Get_IdcData(iCardType, szFileNameIn, szFullFileNameOut, szHeadFileNameOut, ref pId_Card) 是成功的,但去不到pId_Card的值出来,忙了好久了,都没搞定,希望大家来帮帮忙!!!
public byte[,] szText;
直接改为byte[] szText;然后每次取256个字节创建一个string就可以了吧