我正在使用包含非托管代码的dll来与特定硬件进行交互,我正在尝试从C#中使用它,但我一直在获取AccessViolationException。
是什么造成的,我该如何解决?
namespace FingerPrint {
public unsafe partial class Form1 : Form {
[DllImport("MyDll.dll")]
public static extern int DoesExist();
public unsafe Form1() {
InitializeComponent();
MessageBox.Show(DoesExist() + "");
}
}
}
答案 0 :(得分:1)
大约95%的非托管代码的所有故障模式都会产生访问冲突。您可以通过使[DllImport]声明错误来触发此类故障模式。但是发布的DoesExist()不能触发一个。
请与供应商或DLL的作者联系以获取支持。他们在重现故障并使用调试器及其源代码进行诊断时应该没有什么问题,如果你让它很容易失败的话。
为了完整性,AccessViolation的最典型原因是: