Compartilhar via


Visão geral do empacotamento em C++

No modo misto, você às vezes precisa empacotar os dados entre tipos nativos e gerenciados.Visual Studio 2008introduziu a biblioteca de marshaling para ajudar a empacotar e converter dados de uma maneira simple.

Você pode usar a biblioteca de marshaling com ou sem um Classe marshal_context.Algumas conversões exigem um contexto.Outras conversões podem ser implementados usando o marshal_as função.A tabela a seguir lista as conversões atuais com suporte, se eles exigem um contexto e quais arquivos de empacotamento que incluem:

Tipo

Digite

Método Marshal

Incluir arquivo

System ^

Const char *

marshal_context

Marshal.h

Const char *

System ^

marshal_as

Marshal.h

char *

System ^

marshal_as

Marshal.h

System ^

Const wchar_t *

marshal_context

Marshal.h

Const wchar_t *

System ^

marshal_as

Marshal.h

wchar_t *

System ^

marshal_as

Marshal.h

System::IntPtr

ALÇA

marshal_as

marshal_windows.h

ALÇA

System::IntPtr

marshal_as

marshal_windows.h

System ^

BSTR

marshal_context

marshal_windows.h

BSTR

System ^

marshal_as

Marshal.h

System ^

bstr_t

marshal_as

marshal_windows.h

bstr_t

System ^

marshal_as

marshal_windows.h

System ^

std::String

marshal_as

marshal_cppstd.h

std::String

System ^

marshal_as

marshal_cppstd.h

System ^

std::wstring

marshal_as

marshal_cppstd.h

std::wstring

System ^

marshal_as

marshal_cppstd.h

System ^

CStringT <char>

marshal_as

marshal_atl.h

CStringT <char>

System ^

marshal_as

marshal_atl.h

System ^

CStringT <wchar_t>

marshal_as

marshal_atl.h

CStringT <wchar_t>

System ^

marshal_as

marshal_atl.h

System ^

CComBSTR

marshal_as

marshal_atl.h

CComBSTR

System ^

marshal_as

marshal_atl.h

Empacotamento requer um contexto apenas quando o marshaling de dados gerenciado para nativo tipos e o tipo nativo que para converter não tem um destruidor de automático de limpeza.O contexto de empacotamento destrói o tipo de dados nativo alocados em seu destruidor.Portanto, as conversões que exigem um contexto será válidas até que o contexto é excluído.Para salvar quaisquer valores empacotadas, você deve copiar os valores para suas próprias variáveis.

ObservaçãoObservação

Se você tiver incorporado NULLs em sua seqüência, o resultado de empacotamento a cadeia de caracteres não é garantido.Incorporado NULLs pode causar a seqüência de caracteres truncados ou podem ser preservadas.

A biblioteca de marshaling é extensível, de modo que você pode adicionar seus próprios tipos de empacotamento.Para obter mais informações sobre como estender a biblioteca de marshaling, consulte Como: estende a biblioteca de Marshaling.

Em versões anteriores, você pode empacotar dados usando De invocação de plataforma.Para obter mais informações sobre o PInvoke, consulte Chamar funções nativas do código gerenciado.

Consulte também

Tarefas

Como: estende a biblioteca de Marshaling

Outros recursos

Biblioteca de suporte do C++