C++ コードを C# に変換する必要があるプロジェクトに取り組んでいます。
_bstr_t私はC#で同等のものを知りたいコードに出くわしました。
_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
コードを変換するだけの場合は、string
PInvokeを介してC++コードとインターフェイスしている場合は、おそらくパラメーターを文字列として[MarshalAs(UnmanagedType.BStr)]宣言し、パラメーター宣言の前に配置します。
[DllImport("OldCLib.Dll")]
public static extern void PassBStr([MarshalAs(UnmanagedType.BStr)] string s);