次の方法で共有


C++ におけるマーシャリングの概要

混合モードでは、がネイティブ コードとマネージ型の間でデータをマーシャリングします。Visual Studio 2008 はマーシャリングするによって、簡単にある意味では、変換前のデータに役立つマーシャリング ライブラリが導入されました。

marshal_context クラスなしでマーシャリング ライブラリを使用できます。ある変換はコンテキストを必要とします。他の変換は marshal_as 関数を使用して実行できます。次の表は、コンテキストを必要とするかどうか、マーシャリングを、次のコードを含むファイルがない、サポートされている現在の変換を示します:

型から

入力します。

マーシャリングのメソッド

ファイルをインクルードします。

System::String^

const char*

marshal_context

marshal.h

const char*

System::String^

marshal_as

marshal.h

char*

System::String^

marshal_as

marshal.h

System::String^

定数の wchar_t*

marshal_context

marshal.h

const wchar_t *

System::String^

marshal_as

marshal.h

wchar_t*

System::String^

marshal_as

marshal.h

System::IntPtr

HANDLE

marshal_as

marshal_windows.h

HANDLE

System::IntPtr

marshal_as

marshal_windows.h

System::String^

BSTR

marshal_context

marshal_windows.h

BSTR

System::String^

marshal_as

marshal.h

System::String^

bstr_t

marshal_as

marshal_windows.h

bstr_t

System::String^

marshal_as

marshal_windows.h

System::String^

std::string

marshal_as

marshal_cppstd.h

std::string

System::String^

marshal_as

marshal_cppstd.h

System::String^

std::wstring

marshal_as

marshal_cppstd.h

std::wstring

System::String^

marshal_as

marshal_cppstd.h

System::String^

CStringT<文字>

marshal_as

marshal_atl.h

CStringT<文字>

System::String^

marshal_as

marshal_atl.h

System::String^

CStringT<wchar_t>

marshal_as

marshal_atl.h

CStringT<wchar_t>

System::String^

marshal_as

marshal_atl.h

System::String^

CComBSTR

marshal_as

marshal_atl.h

CComBSTR

System::String^

marshal_as

marshal_atl.h

マーシャリングがマネージ コードからネイティブ データ型にマーシャリングし、変換中のネイティブ型が自動のデストラクターをクリーンアップしていない場合のみのコンテキストを必要とします。マーシャリング コンテキストは、デストラクターに割り当てられているネイティブ データ型を破棄します。したがって、コンテキストを必要とする変換は、コンテキストが削除されるまでのみ有効です。マーシャリングされた値を格納するには、に変数を独自に値をコピーします。

[!メモ]

文字列の NULLの秒が挿入されている場合は、文字列をマーシャリングする結果は保証されません。NULLの埋め込み秒数は文字列が切り捨てられることも、これらは保持される場合があります。

マーシャリング ライブラリは、マーシャリングの独自の種類を追加できるように拡張できます。マーシャリング ライブラリの拡張に関する詳細については、 方法: マーシャリング ライブラリを拡張するを参照してください。

以前のバージョンでは、 プラットフォーム呼び出しを使用してデータをマーシャリングする可能性があります。PInvoke の詳細については、「マネージ コードからのネイティブ関数の呼び出し」を参照してください。

参照

処理手順

方法: マーシャリング ライブラリを拡張する

その他の技術情報

C++ のサポート ライブラリ