将概述在C++

在混合模式中,您有时会需要排列在本机和托管类型之间的数据。 Visual Studio 2008 表示封送处理库帮助您具有和转换数据。一种简单的方法。

可以使用封送处理库有或没有 marshal_context 类。 这些转换需要上下文。 使用 marshal_as 功能,其他变换中实现。 下表列出了支持的当前转换,它们是否需要上下文,,以及送文件必须包括:

从类型

对类型

送方法

包含文件

System::String^

const char *

marshal_context

marshal.h

const char *

System::String^

marshal_as

marshal.h

char *

System::String^

marshal_as

marshal.h

System::String^

const wchar_t*

marshal_context

marshal.h

const wchar_t *

System::String^

marshal_as

marshal.h

wchar_t *

System::String^

marshal_as

marshal.h

System::IntPtr

HANDLE

marshal_as

marshal_windows.h

HANDLE

System::IntPtr

marshal_as

marshal_windows.h

System::String^

BSTR

marshal_context

marshal_windows.h

BSTR

System::String^

marshal_as

marshal.h

System::String^

bstr_t

marshal_as

marshal_windows.h

bstr_t

System::String^

marshal_as

marshal_windows.h

System::String^

std::string

marshal_as

marshal_cppstd.h

std::string

System::String^

marshal_as

marshal_cppstd.h

System::String^

std::wstring

marshal_as

marshal_cppstd.h

std::wstring

System::String^

marshal_as

marshal_cppstd.h

System::String^

CStringT<字符>

marshal_as

marshal_atl.h

CStringT<字符>

System::String^

marshal_as

marshal_atl.h

System::String^

CStringT<wchar_t>

marshal_as

marshal_atl.h

CStringT<wchar_t>

System::String^

marshal_as

marshal_atl.h

System::String^

CComBSTR

marshal_as

marshal_atl.h

CComBSTR

System::String^

marshal_as

marshal_atl.h

具有需要上下文,仅当您从托管代码封送到本机数据类型时,如果转换的本机类型没有自动的析构函数清理。 封送处理上下文销毁分配的本机数据类型其析构函数。 因此,需要上下文的转换将是有效的,直至上下文中删除。 若要保存任何排列的值,必须将值复制到您的变量。

备注

如果您在字符串中嵌入 NULL的,封送该字符串的结果不保证。嵌入 NULLs 可能会导致该字符串被截断或他们可以保留。

封送处理库是可扩展的,因此您可以添加自己送的类型。 有关扩展封送处理库的更多信息,请参见 如何:扩展封送处理库

使用 平台调用,在早期版本中,可以将数据。 有关 PInvoke的更多信息,请参见从托管代码调用本机函数

请参见

任务

如何:扩展封送处理库

其他资源

C++支持库