Visual Studio 2017 を使用することをお勧めします

marshal_as

 

公開日: 2016年7月

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

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

To_Type marshal_as<To_Type>(  
   From_Type input   
);  

パラメーター

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

inputの値を変換した後の To_Type 型の変数。

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

サポートされていない 2 つのデータ型をマーシャリングしようとすると、marshal_as は、コンパイル時にエラー C4996 を生成します。 詳細については、このエラーと共に提供されるメッセージを参照してください。 C4996 エラーは、使用されなくなった関数の場合に加えて、他の状況で生成される可能性もあります。 このエラーの 1 つの例は、サポートされていない 2 つのデータ型をマーシャリングしようとする場合です。

マーシャリング ライブラリは、複数のヘッダー ファイルで構成されます。 どの変換でもただ 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;  
}  

Header file: <msclr\marshal.h、> <msclr\marshal_windows.h、> <msclr\marshal_cppstd.h、または> <msclr\marshal_atl.h>

名前空間: msclr::interop

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

表示: