我有問題從C#調用delphi函數(試圖讀取或寫入受保護的內存),並想知道調用方法的正確方法應該是什麼。 Delphi函數簽名如下:如何從C#中調用這個Delphi函數?
procedure methodToCall(
aFirstParameter: Widestring;
var aSecondParameter: Widestring
); stdcall;
從C#中調用此方法的正確方法是什麼?
我有問題從C#調用delphi函數(試圖讀取或寫入受保護的內存),並想知道調用方法的正確方法應該是什麼。 Delphi函數簽名如下:如何從C#中調用這個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
);
如果我使用[MarshalAs(UnmanagedType.LPStr)] StringBuilder firstParameter會發生什麼? – 2011-03-15 10:31:15
因爲Delphi代碼被寫入來接收WideString(又名BSTR)而不是LPStr,會出現什麼問題。我只寫了一個DLL來測試這個,上面的C#代碼完美地工作。 – 2011-03-15 10:34:48
你是否有一個Delphi WideStrings和BSTR相同的源代碼? – CodesInChaos 2011-03-15 10:37:08
嗨,你是如何在C#中調用這個?與DllImport或與COM互操作性?你添加了參考嗎?我們可以看到C#方面嗎? – 2011-03-15 09:52:07