C#调用非托管DLL,报“其他内存已损坏”,请问怎么解决呢? 10C

定义:

 [DllImport("BSEncrypt.dll")]
public static extern bool MD5String(ref string instr, int inlen, ref string outstr, int outlen);

调用:

 String ls_MD5Password = new String('\0', 100);
string as_Password = userid + pwd;
var loginCheck = BSEncrypt.MD5String(ref as_Password, as_Password.Length, ref ls_MD5Password, 100);

错误:
“System.AccessViolationException”类型的未经处理的异常在 未知模块。 中发生
其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

图片说明

2个回答

这DLL有内存泄漏吧;
参考:http://www.jb51.net/article/46384.htm
也有可能是DllImport参数的问题;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!