2

C++ コードを C# に変換する必要があるプロジェクトに取り組んでいます。

_bstr_t私はC#で同等のものを知りたいコードに出くわしました。

4

2 に答える 2

8

_bstr_tクラスBSTRtypeのラッパーです。これは、言語間で標準化されたOLE オートメーションの文字列です。

つまり、.NET で同等の型はSystem.String.

重要なのは、それとやり取りするとき (または .NET コードで COM 相互運用のためのインターフェイスを定義するとき)、次のように、の列挙MarshalAsAttributeからの値でを使用することです。UnmanagedTypeUnmanagedType.BStr

// This is on an interface that is in unmanaged code.
public void DoSomething([MarshalAs(UnmanagedType.BStr] string myString);

クラスが実際に_bstr_tCOM インターフェイスで を公開している場合は、それを変更してBSTR;を公開する必要があることに注意してください。_bstr_tインターフェイスの境界を越えて公開されることを意図していないヘルパー クラスです。はそのBSTRためのもので、のメソッドはインスタンス_bstr_tの割り当てと使用を処理するためのものです。BSTR

于 2012-11-06T18:08:45.090 に答える
0

コードを変換するだけの場合は、string

PInvokeを介してC++コードとインターフェイスしている場合は、おそらくパラメーターを文字列として[MarshalAs(UnmanagedType.BStr)]宣言し、パラメーター宣言の前に配置します。

[DllImport("OldCLib.Dll")]
public static extern void PassBStr([MarshalAs(UnmanagedType.BStr)] string s); 
于 2012-11-06T18:14:51.853 に答える