私はC#で呼び出す必要がある関数を含むDelphi DLLが与えられています。関数の1つが2つのchar配列をとります.1つは暗号化されたパスワードで、もう1つはキーです。C#のDLLからこのDelphi関数を呼び出す方法は?
TCString = array[0..254] of Char;
...
function Decrypt(const S, Key: TCString): TCString; stdcall;
私は自分自身でこの関数を呼び出す方法を把握しようとしたが、私は入れません「『戻り値』をマーシャリングすることはできません:無効な/アンマネージドタイプの組み合わせを管理します」 DelphiのChar型は8ビットのAnsiCharであるため、バイトを使用しています。
[DllImport("path", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public static extern byte[] Decrypt(byte[] S, byte[] Key);
これをC#で呼び出す正しい方法は何ですか?
これに対処する方法はいくつかあります。最初のステップは、CharがあなたのDelphiにあることを理解することです。それは8または16ビット幅ですか?それは8ビットであり、Delphiの開発者はByteではなくCharを使用していないと仮定しています。 –
@DavidHeffernan Delphiの開発者は、彼が使用している文字の種類はAnsiCharだから、それは8ビットだと言った –