marshal_as

このメソッドは、ネイティブ環境とマネージ環境との間でデータ変換を行います。

To_Type marshal_as<To_Type>(
   From_Type input 
);

パラメータ

  • [入力] input
    To_Type 変数にマーシャリングする値。

戻り値

input の変換後の値である To_Type 型の変数。

解説

このメソッドは、ネイティブ型とマネージ型との間でデータを変換する簡単な方法です。サポートされているデータ型を確認するには、「C++ におけるマーシャリングの概要」を参照してください。一部のデータ変換ではコンテキストが必要になります。このようなデータ型は、marshal_context クラスを使用して変換できます。

サポートされていないデータ型のペアをマーシャリングしようとすると、marshal_as は、コンパイル時にエラー C4996 を生成します。詳細については、このエラーと一緒に表示されるメッセージを参照してください。C4996 エラーは、非推奨の関数を使用していなくても発生する場合があります。たとえば、サポートされていないデータ型のペアをマーシャリングしようとした場合が該当します。

マーシャリング ライブラリは、複数のヘッダー ファイルで構成されます。各変換で必要になるファイルは 1 つだけですが、他の変換で必要となる場合は追加のファイルをインクルードできます。どの変換がどのファイルに関連付けられているかを確認するには、「Marshaling Overview」の表を参照してください。実行する変換に関係なく、名前空間の要件は常に有効です。

使用例

この例は、const char* から System::String 変数型にマーシャリングします。

// marshal_as_test.cpp
// compile with: /clr
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal.h>

using namespace System;
using namespace msclr::interop;

int main() {
   const char* message = "Test String to Marshal";
   String^ result;
   result = marshal_as<String^>( message );
   return 0;
}

必要条件

ヘッダー ファイル : <msclr\marshal.h>、<msclr\marshal_windows.h>、<msclr\marshal_cppstd.h>、または <msclr\marshal_atl.h>

名前空間 : msclr::interop

参照

概念

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

marshal_context クラス