我得到一個Delphi DLL,其中包含我需要在C#中調用的函數。其中一個函數需要兩個char數組,其中一個是加密的密碼,另一個是密鑰。如何從C#中的DLL調用此Delphi函數?
TCString = array[0..254] of Char;
...
function Decrypt(const S, Key: TCString): TCString; stdcall;
我試圖找出如何調用我自己的這個功能,但我不斷收到「無法元帥‘返回值’:無效的託管/非託管類型組合。」我使用字節,因爲Delphi中的Char類型是AnsiChar,它是8位。
[DllImport("path", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public static extern byte[] Decrypt(byte[] S, byte[] Key);
什麼是在C#中調用此方法的正確方法?
有幾種方法可以解決這個問題。第一步是確定Char在Delphi中的含義。它是8位還是16位寬?假設它是8位,並且Delphi開發人員使用Char而不是Byte來馬虎。 –
@DavidHeffernan Delphi開發人員說他使用的字符類型是AnsiChar,所以它是8位 –