报的错是:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。。我能保证这个dll没有错,而且有的机器运行正常,有的机器会报这个错。扫遍了百度和谷歌,方法我都试过但是还是出问题。有的说C#调用时参数加上ref,或者用char[],或者用byte[],我都试过,还是报这个错。问题的关键还是delphi的pchar类型,C#用什么类型定义
delphi中的dll方法
function MainDll(param1:Pchar):Boolean;stdcall;C#中的定义
private const string str_fileDll = @"MainDLL.dll";
        [DllImport(str_fileDll, EntryPoint = "MainDLL", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern bool MainDll(string param1);//StringBuilder也报同样的错。
C#调用
if(MainDll("文本"))
{
  ;//此处报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。。
}