Présentation du marshaling en C++
En mode mixte, vous devez parfois marshaler les données entre les types managés.Visual Studio 2008 a introduit la bibliothèque de marshaling pour vous aider à marshaler et de convertir les données de manière simple.
Vous pouvez utiliser la bibliothèque de marshaling avec ou sans marshal_context, classe.Certaines conversions requièrent un contexte.D'autres conversions peuvent être implémentées à l'aide de la fonction de marshal_as .Le tableau suivant répertorie les conversions actuelles prises en charge, s'ils ont besoin d'un contexte, le marshaler le fichier vous devez inclure :
Du type |
Pour taper |
Méthode de marshaler |
Fichier Include |
---|---|---|---|
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<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 |
Le marshaling requiert un contexte uniquement lorsque vous marshalez de managées aux types de données natifs et le type natif que vous convertissez pas nettoyer un destructeur pour automatique.Le contexte de marshaling détruit le type de données natif alloué dans son destructeur.Par conséquent, les conversions qui requièrent un contexte sera valide uniquement jusqu'à ce que le contexte est supprimé.Pour enregistrer toutes les valeurs sont marshalées, vous devez copier les valeurs à vos propres variables.
[!REMARQUE]
Si vous avez incorporé NULLs dans votre chaîne, le résultat de marshaler la chaîne n'est pas garanti.NULLincorporé s peut provoquer une chaîne à tronquer ou elles peuvent être conservées.
La bibliothèque de marshaling est extensible afin que vous puissiez ajouter vos propres types de marshaling.Pour plus d'informations sur étendre la bibliothèque marshaling, consultez Comment : étendre la bibliothèque de marshaling.
Dans les versions antérieures, vous pouviez marshaler des données à l'aide de appel de code non managé.Pour plus d'informations sur PInvoke, consultez Appel à des fonctions natives à partir de code managé.
Voir aussi
Tâches
Comment : étendre la bibliothèque de marshaling