C#如何调用C++编写的结构类型的dll?
C++ DLL中的结构定义:
typedef struct {
bool bIsInfo;
char strANI[256];
char strDNIS[256];
char strOriginANI[256];
char strOriginDNIS[256];
char strFromDN[256];
char strToDN[256];
char strDestAgentID[256];
char strSkillGroup[256];
}AgentCallInfo;
C++ DLL中的接口函数定义:
AgentCallInfo* GetAgentCallInfo()
{
AgentCallInfo g_CallInfo;
...
return (&g_CallInfo);
}
我在C#中对结构的定义:
[ StructLayout( LayoutKind.Sequential )]
public struct AgentCallInfo
{
public bool bIsInfo;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strANI;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strDNIS;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strOriginANI;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strOriginDNIS;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strFromDN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strToDN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strDestAgentID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public char[] strSkillGroup;
}
对接口的声明:
[DllImport("DesktopAgent.dll", CharSet = CharSet.Ansi)]
public static extern AgentCallInfo GetAgentCallInfo();
使用:
AgentCallInfo agentCallInfo =GetAgentCallInfo();
结果报错。偶定义的结构对吗?(偶是菜鸟 :( )应该怎样调用这个DLL接口呢?请高手指点,谢谢!