C#调用非托管DLL出错,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
我的程序使用一个表格编辑控件,其中一部分特殊的处理是旧版本用Delphi写的,我把这部分特殊处理代码封装成了DLL。使用Delphi自己写了个例子的代码调用这个DLL没有问题,但使用C#调用时却出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”,请教高手这个问题怎么办?
代码如下:(里面的cell是一个表格控件)
[DllImport(@".\\bin\\CellJiSuan.dll", CharSet = CharSet.Auto, EntryPoint = "JiSuan", SetLastError = true,
ExactSpelling=true, CallingConvention=CallingConvention.StdCall)]
static extern int JiSuan(out AxCELL50Lib.AxCell cell);
public static void CallJiSuan(AxCELL50Lib.AxCell cell)
{
string DllFile = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\bin\\CellJiSuan.dll";
if (System.IO.File.Exists(DllFile))
{
JiSuan(out cell); //这一句出错
}
}