Přehled zařazování v jazyce C++
V kombinovaném režimu někdy musí zařazování mezi typy spravovaných a nativní data.Visual Studio 2008zavedena zařazovacího knihovny k zařazování a jednoduchým způsobem převést data.
S nebo bez zařazovacího knihovny můžete Třída marshal_context.Některé převody vyžadují kontext.Jiné převody lze implementovat pomocí marshal_as funkce.Následující tabulce jsou uvedeny aktuální převody podporovány, zda vyžaduje kontext a zařazování souborů, které je třeba zahrnout:
Z typu |
Zadejte |
Způsob zařazování |
Zahrnout soubor |
---|---|---|---|
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 při zařazování spravované na nativní data z typů a nativní typ, který převádíte na nemá destruktoru pro automatické vyčištění.Zařazovací kontextu ničí přidělené nativní datový typ v jeho destruktoru.Převody, které vyžadují kontext budou proto platné pouze do souvislosti se zrušuje.Chcete-li uložit všechny zařazené hodnoty je třeba zkopírovat do vlastní proměnné hodnoty.
[!POZNÁMKA]
Pokud jste vložili NULLs vaší řetězce výsledek zařazování řetězec není zaručeno.Vložený NULLs může způsobit řetězec zkrácen nebo může být zachována.
Tak, že přidáte vlastní typy zařazovacího je rozšiřitelný zařazovacího knihovny.Další informace o rozšíření zařazovacího knihovny, viz Jak: rozšířit zařazovacího knihovny.
V dřívějších verzích nelze zařazování dat pomocí Platform vyvolat.Pro více informací o PInvoke si prohlédněte Volání nativní funkce ze spravovaného kódu.
Viz také
Úkoly
Jak: rozšířit zařazovacího knihovny