我的c dll来自我们小组以外的地方。
#pragma pack(push, 8)
typedef struct
{
int int1;
int int2;
int int3;
int int4;
int int5;
int int6;
int int_array1[250];
int int_array2[250];
int int_array3[250];
int int_array4[250];
int int_array5[250];
int int_array6[250];
}my_structure
#pragma pack(pop)
extern "C" {
__declspec(dllexport) void set_my_structure(my_structure mystruct);
__declspec(dllexport) my_structure get_my_structure();
}
我使用以下代码从C#调用dll。
[StructLayout(LayoutKind.Sequential, Pack = 8)]
public class MyStructure
{
public int int1;
public int int2;
public int int3;
public int int4;
public int int5;
public int int6;
public int[] int_array1 = new int[250];
public int[] int_array2 = new int[250];
public int[] int_array3 = new int[250];
public int[] int_array4 = new int[250];
public int[] int_array5 = new int[250];
public int[] int_array6 = new int[250];
}
[DllImport(_dllName, EntryPoint = "set_my_structure", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi, ExactSpelling = true)]
public static extern void SetMyStructure(MyStructure data);
[DllImport(_dllName, EntryPoint = "get_my_structure", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi, ExactSpelling = true)]
public static extern MyStructure GetMyStructure();
然而,当我调用GetMyStructure方法时,代码抛出异常并停留在空档。怎么了?处理这个问题的最佳方法是什么?