我在从C#调用delphi函数时遇到问题(尝试读取或写入受保护的内存),并且想知道调用该方法的正确方法是什么。 Delphi函数签名如下:
procedure methodToCall(
aFirstParameter: Widestring;
var aSecondParameter: Widestring
); stdcall;
从C#调用此方法的正确方法是什么?
答案 0 :(得分:7)
WideString与COM BSTR兼容,因此.net marshaller应该能够非常愉快地使用它:
[DllImport(@"test.dll")]
private static extern void methodToCall(
[MarshalAs(UnmanagedType.BStr)]
string aFirstParameter,
[MarshalAs(UnmanagedType.BStr)]
ref string aSecondParameter
);