调用三方DLL出现的错误:FatalExecutionError
调用一个设备的操作DLL文件。
初始化的过程都是好的。但是在读缓存的时候出现如下错误:
运行库遇到了错误。此错误的地址为 0x79ef067e,在线程 0xe58 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。
[DllImport( "ldv32.dll ")]
private static extern string ldv_get_version();
[DllImport( "ldv32.dll ")]
private static extern short ldv_open(string id,ref short handle);
[DllImport( "ldv32.dll ")]
private static extern short ldv_close(short handle);
[DllImport( "ldv32.dll ")]
private static extern short ldv_read(short handle, ref byte[] data, short len);
[DllImport( "ldv32.dll ")]
private static extern short ldv_read(short handle, byte[] data, short len);
//下面是初始化,OK
ret = ldv_open( "LON1 ", ref handle);
if (ret == 0)
{
Text = Text + "\tOpen device successfully ";
timer1.Enabled = true;
}
//下面是读数据,出现错误
short ret;
byte[] data;
ret = ldv_read(handle, out data, 257); // 错误地点
if (ret == 0)
{
listBox1.Items.Add(DateTime.Now.ToLongTimeString() + data);
}
------解决方案--------------------try
[DllImport( "ldv32.dll ")]
private static extern short ldv_read(s