如何从C#调用此Delphi函数?

如何从C#调用此Delphi函数?,c#,delphi,pinvoke,marshalling,widestring,C#,Delphi,Pinvoke,Marshalling,Widestring,我从C#调用delphi函数时遇到问题(试图读取或写入受保护的内存),我想知道调用该方法的正确方法应该是什么。Delphi函数签名如下: procedure methodToCall( aFirstParameter: Widestring; var aSecondParameter: Widestring ); stdcall; 从C#调用此方法的正确方法是什么?WideString与COM BSTR兼容,因此.net封送员应该能够非常愉快地使用它: [DllImp

我从C#调用delphi函数时遇到问题(试图读取或写入受保护的内存),我想知道调用该方法的正确方法应该是什么。Delphi函数签名如下:

procedure methodToCall(
    aFirstParameter: Widestring; 
    var aSecondParameter: Widestring
    ); stdcall;

从C#调用此方法的正确方法是什么?

WideString与COM BSTR兼容,因此.net封送员应该能够非常愉快地使用它:

[DllImport(@"test.dll")]
private static extern void methodToCall(
    [MarshalAs(UnmanagedType.BStr)]
    string aFirstParameter,
    [MarshalAs(UnmanagedType.BStr)]
    ref string aSecondParameter
);

嗨,你怎么称呼C#的这个?使用DllImport还是使用COM互操作性?你添加了参考资料了吗?我们也可以看到C#端吗?如果我使用[Marshallas(UnmanagedType.LPStr)]StringBuilder firstParameter,会发生什么情况?因为编写Delphi代码是为了接收WideString(又名BSTR)而不是LPStr,那么会出现什么错误。我刚刚编写了一个DLL来测试这一点,上面的C#代码工作得非常好。你有Delphi WideString和BSTR相同的源代码吗?@CodeInChaos,它在