Delphi dll导入到C# - System.AccessViolationException DllImport

时间:2017-08-11 12:36:57

标签: c# delphi dll dllimport

美好的一天。我正在努力让函数调用我的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;
        }

    }

1 个答案:

答案 0 :(得分:0)

让供应商修复他们的代码。

如果你有Delphi代码,请查看CoTaskMemAlloc