私はマーシャルにしようとしているunmaged COMオブジェクトのメソッドがあります。.NETでLPSTR **をマーシャリングする方法は?
STDMETHOD(SomeMethod)(LPSTR** items, INT* numOfItems) = 0;
をしかし、私はLPSTR **項目をマーシャリングする正しい方法を把握することはできません。それはアイテムのリストであるはずです。しかし、このような何かをしようとした場合:
[PreserveSig]
int SomeMethod([MarshalAs(UnmanagedType.LPStr)]ref StringBuilder items, ref uint numOfItems);
すると、私は非常に最初の項目と他には何の非常に最初の文字を取得します。
LPSTR **変数を正しくマーシャリングできますか?
これは、より多くの 'StringBuilderの[]'のようにする必要があります。このパラメータは手動で整列化できます(例:[この質問](http://stackoverflow.com/q/16857034/1997232))。 – Sinatr
@Sinatr、私はStringBuilder []を使ってみましたが、この場合、私はこのエラーが出ます: "マネージドデバッグアシスタント 'ContextSwitchDeadlock'が発生しました。あなたが提供したリンクを見てみましょう。 – user208478
マーシャリングの方向は何ですか? In、Out、Both? – arbiter