C++给的接口:
typedef bool (FUNDLL* FUN_GetIMEI_BT_WIFI_EX2)(const char * strIMEI, const char * strSMTSN, char ** vecField, char ** vecRecord, int size, char * strerr, int errlen);
C#的调用方式:
private static extern bool GetIMEI_BT_WIFI_EX2(StringBuilder strIMEI1, StringBuilder custsn, IntPtr[] vecField, IntPtr[] vecRecord,ref Int32 size, StringBuilder strerr,ref Int32 errlen);
这么调用会报错“System.AccessViolationException:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
请问是什么原因呢?
int那里不ref也一样,但不是报错,而是直接闪退了,看输出说
运行库遇到了错误。此错误的地址为 0x79e8eda2,在线程 0xaa4 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。
求解答