1

.NET で作成した COM dll があります。Silverlight経由でアクセスしています。私が抱えている問題は、byte[] を COM dll に渡していることですが、正しく動作していないようです。[In][Out] としてマークしようとしましたが、うまくいきませんでした。

void LoadData(byte[] data)

これは私の機能がどのように見えるかです。COM側でデータを正常にロードしますが、Silverlightには戻りません。

4

3 に答える 3

1

COM Interop を使用する場合は、配列を参照渡ししてみてください。

void LoadData(ref byte[] data)
于 2012-06-13T16:30:25.687 に答える
0

ここで、配列のデフォルトのマーシャリングを調べると役立つ場合があります。

それでも問題が解決しない場合は、COM dll のタイプ ライブラリを生成します (たとえば、tlbexp を使用します)。呼び出している関数の IDL 定義を見ると、byte[] パラメータが機能しない理由が明らかになる場合があります。それでも明確でない場合は、その IDL をここに投稿してください。少なくともより多くの手がかりが得られます。

于 2012-07-03T12:45:14.643 に答える
-2
byte[] data = new byte[30]
LoadData(Convert.toBase64String(data.Tostring()));


void LoadData(byte[] data)
{

}
于 2012-06-14T17:15:09.623 に答える