C + +에서 마샬링 개요
혼합된 모드에서 네이티브 및 관리 되는 형식 간에 데이터를 가끔 마샬링해야 합니다.Visual Studio 2008도움말 마샬링 라이브러리가 도입 마샬링하고 간단한 방법으로 데이터를 변환 합니다.
마샬링 라이브러리 유무에 관계 없이 사용할 수 있는 marshal_context 클래스.일부 변환은 컨텍스트가 필요 합니다.다른 변환을 사용 하 여 구현할 수 있습니다는 marshal_as 함수.다음 표에 현재 지원 되는 변환, 컨텍스트 필요한 여부 및 어떤 마샬 파일에 포함 해야 합니다.
형식에서 |
입력 |
Marshal 메서드 |
파일을 포함 합니다. |
---|---|---|---|
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 ^ |
<char>의 CStringT |
marshal_as |
marshal_atl.h |
<char>의 CStringT |
System::String ^ |
marshal_as |
marshal_atl.h |
System::String ^ |
<wchar_t>의 CStringT |
marshal_as |
marshal_atl.h |
<wchar_t>의 CStringT |
System::String ^ |
marshal_as |
marshal_atl.h |
System::String ^ |
CComBSTR |
marshal_as |
marshal_atl.h |
CComBSTR |
System::String ^ |
marshal_as |
marshal_atl.h |
마샬링 컨텍스트가에서 관리 되는 기본 데이터 형식을 마샬링하는 네이티브 형식으로 변환 하는 소멸자를 자동 없는 정리 때만 필요 합니다.마샬링 컨텍스트가 할당 된 네이티브 데이터 형식에서 소멸자가 소멸 됩니다.따라서 컨텍스트는 삭제 될 때까지 컨텍스트가 필요 변환을 잘못 됩니다.마샬링된 값을 저장 하려면 사용자 고유의 변수에 값 복사 해야 합니다.
[!참고]
포함 하는 경우 NULLs 문자열에는 문자열의 마샬링 한 결과 보장 되지 않습니다.포함 된 NULLs 문자열 잘릴 수 발생할 수 있습니다 또는 유지 될 수 있습니다.
사용자 지정 마샬링 종류를 추가할 수 있도록 마샬링 라이브러리를 확장할 수 있습니다.마샬링 라이브러리를 확장 하는 방법에 대 한 자세한 내용은 방법: 마샬링 라이브러리 확장.
이전 버전에서 사용 하 여 데이터 마샬링할 수 p/Invoke.PInvoke에 대한 자세한 내용은 관리 코드에서 네이티브 함수 호출를 참조하십시오.