C++/CLI'da Sıralamaya Genel Bakış
Karma modda, bazen verilerinizi yerel ve yönetilen türler arasında hazırlamanız gerekir. Hazırlama kitaplığı, verileri basit bir şekilde hazırlamanıza ve dönüştürmenize yardımcı olur. Sıralama kitaplığı, bir dizi işlevden ve ortak türler için sıralama gerçekleştiren bir marshal_context
sınıftan oluşur. Kitaplık, Visual Studio sürümünüz için include/msclr dizinindeki şu üst bilgilerde tanımlanır:
Üst bilgi | Açıklama |
---|---|
marshal.h | marshal_context sınıf ve bağlamsız hazırlama işlevleri |
marshal_atl.h | ATL türlerini hazırlama işlevleri |
marshal_cppstd.h | Standart C++ türlerini hazırlama işlevleri |
marshal_windows.h | Windows türlerini hazırlama işlevleri |
Msclr klasörünün varsayılan yolu, sahip olduğunuz sürüme ve derleme numarasına bağlı olarak aşağıdaki gibidir:
C:\\Program Files (x86)\\Microsoft Visual Studio\\Preview\\Enterprise\\VC\\Tools\\MSVC\\14.15.26528\\include\\msclr
Marshal_context Sınıfı ile veya sınıfı olmadan hazırlama kitaplığını kullanabilirsiniz. Bazı dönüştürmeler bir bağlam gerektirir. Diğer dönüştürmeler marshal_as işlevi kullanılarak uygulanabilir. Aşağıdaki tabloda desteklenen geçerli dönüştürmeler, bağlam gerekip gerekmediği ve hangi hazırlama dosyasını eklemeniz gerekip gerekmediği listelenmektedir:
Kimden türü | Yazacak | Marshal yöntemi | Dosyayı dahil et |
---|---|---|---|
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 |
Sistem::IntPtr | KULP | marshal_as | marshal_windows.h |
KULP | Sistem::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<karakteri> | marshal_as | marshal_atl.h |
CStringT<karakteri> | 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 |
Hazırlama, yalnızca yönetilen veri türlerinden yerel veri türlerine sıraladığınızda bir bağlam gerektirir ve dönüştürdüğünüz yerel türün otomatik temizleme için bir yıkıcısı yoktur. Hazırlama bağlamı, kendi yıkıcısında ayrılan yerel veri türünü yok eder. Bu nedenle, bağlam gerektiren dönüştürmeler yalnızca bağlam silinene kadar geçerli olur. Sıralanmış değerleri kaydetmek için değerleri kendi değişkenlerinize kopyalamanız gerekir.
Not
Dizenize s katıştırdıysanız NULL
, dizenin sıralanması garanti edilmez. Katıştırılmış NULL
s dizenin kesilmesine neden olabilir veya korunabilir.
Bu örnekte, msclr dizininin ekleme üst bilgisi bildirimine nasıl dahil edilmesi gösterilmektedir:
#include "msclr\marshal_cppstd.h"
Kendi sıralama türlerinizi ekleyebilmeniz için sıralama kitaplığı genişletilebilir. Hazırlama kitaplığını genişletme hakkında daha fazla bilgi için bkz . Nasıl yapılır: Hazırlama Kitaplığını Genişletme.
Ayrıca bkz.
C++ Support Library
Nasıl yapılır: Hazırlama Kitaplığını Genişletme