다음을 통해 공유


marshal_context 클래스

이 클래스는 네이티브 환경과 관리되는 환경 간에 데이터를 변환합니다.

구문

class marshal_context

설명

컨텍스트가 marshal_context 필요한 데이터 변환에 클래스를 사용합니다. 컨텍스트가 필요한 변환과 포함해야 하는 마샬링 파일에 대한 자세한 내용은 C++의 마샬링 개요를 참조 하세요. 컨텍스트를 사용할 때 마샬링의 결과는 개체가 제거될 때까지 marshal_context 만 유효합니다. 결과를 유지하려면 데이터를 복사해야 합니다.

marshal_context 다양한 데이터 변환에 동일한 기능을 사용할 수 있습니다. 이러한 방식으로 컨텍스트를 다시 사용하면 이전 마샬링 호출의 결과에 영향을 주지 않습니다.

멤버

Public 생성자

속성 설명
marshal_context::marshal_context 관리되는 데이터 형식과 네이 marshal_context 티브 데이터 형식 간의 데이터 변환에 사용할 개체를 생성합니다.
marshal_context::~marshal_context marshal_context 개체를 제거합니다.

공용 메서드

이름 설명
marshal_context::marshal_as 특정 데이터 개체에서 마샬링을 수행하여 관리되는 데이터 형식과 네이티브 데이터 형식 간에 변환합니다.

요구 사항

헤더 파일:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> 또는 <msclr\marshal_atl.h>

네임스페이스: msclr::interop

marshal_context::marshal_context

관리되는 데이터 형식과 네이 marshal_context 티브 데이터 형식 간의 데이터 변환에 사용할 개체를 생성합니다.

marshal_context();

설명

일부 데이터 변환에는 마샬링 컨텍스트가 필요합니다. 컨텍스트가 필요한 번역 및 애플리케이션에 포함해야 하는 마샬링 파일에 대한 자세한 내용은 C++의 마샬링 개요를 참조하세요.

예시

marshal_context::marshal_as 예제를 참조하세요.

marshal_context::~marshal_context

marshal_context 개체를 제거합니다.

~marshal_context();

설명

일부 데이터 변환에는 마샬링 컨텍스트가 필요합니다. 컨텍스트가 필요한 번역 및 애플리케이션에 포함해야 하는 마샬링 파일에 대한 자세한 내용은 C++의 마샬링 개요를 참조하세요.

개체를 marshal_context 삭제하면 해당 컨텍스트에서 변환된 데이터가 무효화됩니다. 개체가 제거된 후 marshal_context 데이터를 유지하려면 데이터를 유지할 변수에 수동으로 복사해야 합니다.

marshal_context::marshal_as

특정 데이터 개체에서 마샬링을 수행하여 관리되는 데이터 형식과 네이티브 데이터 형식 간에 변환합니다.

To_Type marshal_as<To_Type>(
   From_Type input
);

매개 변수

input
[in] 변수에 마샬링할 값입니다 To_Type .

반환 값

변환된 값인 형식 To_Type 의 변수입니다 input.

설명

이 함수는 특정 데이터 개체에 대해 마샬링을 수행합니다. C++의 마샬링 개요에서 표에 표시된 변환에만 이 함수를 사용합니다.

지원 marshal_as 되지 않는 데이터 형식 쌍을 마샬링하려고 하면 컴파일 시간에 오류 C4996 이 생성됩니다. 자세한 내용은 이 오류와 함께 제공된 메시지를 읽어보세요. 이 오류는 C4996 더 이상 사용되지 않는 함수에 대해 생성될 수 있습니다. 이 오류를 생성하는 두 가지 조건은 지원되지 않는 데이터 형식 쌍을 마샬링하고 컨텍스트가 필요한 변환에 사용 marshal_as 하려고 하는 것입니다.

마샬링 라이브러리는 여러 헤더 파일로 구성됩니다. 모든 변환에는 하나의 파일만 필요하지만 다른 변환을 위해 필요한 경우 추가 파일을 포함할 수 있습니다. 테이블의 각 변환에 Marshaling Overview in C++ 포함해야 하는 마샬링 파일을 나타냅니다.

예시

이 예제에서는 변수 형식으로 System::String 마샬링하기 위한 컨텍스트를 const char * 만듭니다. 변환된 데이터는 컨텍스트를 삭제하는 줄 이후에는 유효하지 않습니다.

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

using namespace System;
using namespace msclr::interop;

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