再会。我正在努力让函数调用到我的 Delphi 以返回数据。我知道 dll 正在工作,因为如果我在 dll 中使用 show msg 它会返回正确的信息。
我认为它与不相同的内存大小有关。我还阅读了很多关于预缓冲内存的内容,不幸的是,我不知道谁将它实施到我的项目中
异常详细信息:System.AccessViolationException {“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”}
德尔福函数:
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;
}
}
让供应商修复他们的代码。
如果您有 Delphi 代码,请查看 CoTaskMemAlloc
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句