c# 调用c写的动态链接库时产生的问题,返回参数为结构,结构返回的值不对?
c#部分:
结构声明:
[StructLayout(LayoutKind.Explicit, Size=96, CharSet=CharSet.Ansi)]
public struct HHNews_Head
{
[FieldOffset(0)]public string remark;
[FieldOffset(48)]public string code;
[FieldOffset(64)]public long tsflag;
[FieldOffset(80)]public short items;
[FieldOffset(82)]public short itemsize;
[FieldOffset(84)]public int date;
[FieldOffset(88)]public int time;
[FieldOffset(92)]public int offset;
};
调dll:
[DllImport("HQstruct.dll", EntryPoint="getNews_HeadStruct",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
public static extern int getNews_HeadStruct(string FileName, ref HHNews_Head pGetInfo);
调用c中的函数:
HHNews_Head head = new HHNews_Head();
int n = getNews_HeadStruct("c:\\news.hni", ref head);
// head得到的值不对,只有head.remark有值,其余为0
c的dll中结构定义及函数声明
struct HHNews_Head
{
char remark[48];
char code[16];
long tsflag[4];
short items;
short itemsize;
long date;
long time;
int offset;
};
extern "C" int __declspec(dllexport)getNews_HeadStruct(CString FileName, HHNews_Head ** pGetInfo);