美好的一天。我正在努力让函数调用我的Delphi来返回数据。我知道dll正在工作,因为如果我在dll中使用show msg它会返回正确的信息。
我在想它与不相同的内存大小有关。我还阅读了很多关于预缓存的内容,不幸的是,我没有知道谁将其实施到我的项目中
异常详情: System.AccessViolationException {"尝试读取或写入受保护的内存。这通常表明其他内存已损坏。"}
Delphi功能:
function doStuff({var} c:string): pchar; stdcall;
C#
[DllImport("Utili.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Unicode)]
public static extern string doStuff(string a);
static void Main(string[] args)
{
try
{
string q = "1234567890123456";
string a = doStuff(q);
}
catch (Exception)
{
throw;
}
}
答案 0 :(得分:0)
让供应商修复他们的代码。
如果你有Delphi代码,请查看CoTaskMemAlloc