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çã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