Sdílet prostřednictvím


Přehled zařazování v jazyku C++

Ve smíšeném režimu je někdy nutné zařadit data mezi nativní a spravované typy.Visual Studio 2008 představuje zařazovací knihovnu umožňující jednoduchým způsobem zařazovat a převádět data.

Zařazovací knihovnu je možné použít s nebo bez marshal_context – třída.Některé převody vyžadují kontext.Ostatní převody mohou být implementovány pomocí funkce marshal_as.Následující tabulka uvádí aktuální podporované převody, zda vyžadují kontext a jaký zařazovací soubor je třeba zahrnout:

Z typu

Na typ

Způsob zařazování

Soubor k zahrnutí

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

POPISOVAČ

marshal_as

marshal_windows.h

POPISOVAČ

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<char>

marshal_as

marshal_atl.h

CStringT<char>

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

Zařazování vyžaduje kontext pouze v případě, že zařazování probíhá ze spravovaných do nativních datových typů a nativní typy, na které je převáděno, nemají destruktor pro automatické vyčištění.Zařazovací kontext ve svém destruktoru zruší přidělený nativní datový typ.Proto převody, které vyžadují kontext, budou platné pouze do zrušení kontextu.Pro uložení jakékoli zařazované hodnoty je třeba zkopírovat hodnoty do vlastních proměnných.

[!POZNÁMKA]

Při zařazení NULL do řetězce, není výsledek zařazování řetězce zaručen.Vložené znaku NULL můžou způsobit zkrácení řetězce nebo můžou být zachovány.

Hlavičkové soubory zařazovací knihovny jsou umístěny v zahrnutém adresáři v podadresáři msclr.Tento příklad ukazuje, jak zahrnout adresář msclr do zahrnuté deklarace hlavičkového souboru:

#include "msclr\marshal_cppstd.h"

Zařazovací knihovna je rozšiřitelná, takže je možné přidat vlastní zařazovací typy.Další informace o rozšíření zařazovací knihovny naleznete v tématu Postupy: Rozšíření knihovny zařazování.

V dřívějších verzích bylo možné zařazovat data pomocí Volání nespravovaného kódu.Další informace o PInvoke naleznete v tématu Volání nativních funkcí ze spravovaného kódu.

Viz také

Úkoly

Postupy: Rozšíření knihovny zařazování

Další zdroje

Knihovna podpory C++