marshal_as
This method converts data between native and managed environments.
Syntax
To_Type marshal_as<To_Type>(
From_Type input
);
Parameters
input
[in] The value that you want to marshal to a To_Type
variable.
Return Value
A variable of type To_Type
that is the converted value of input
.
Remarks
This method is a simplified way to convert data between native and managed types. To determine what data types are supported, see Overview of Marshaling in C++. Some data conversions require a context. You can convert those data types by using the marshal_context Class.
If you try to marshal a pair of data types that are not supported, marshal_as
will generate an error C4996 at compile time. Read the message supplied with this error for more information. The C4996
error can be generated for more than just deprecated functions. One example of this is trying to marshal a pair of data types that are not supported.
The marshaling library consists of several header files. Any conversion requires only one file, but you can include additional files if you need to for other conversions. To see which conversions are associated with which files, look in the table in Marshaling Overview
. Regardless of what conversion you want to do, the namespace requirement is always in effect.
Throws System::ArgumentNullException(_EXCEPTION_NULLPTR)
if the input parameter is null.
Example
This example marshals from a const char*
to a System::String
variable type.
// marshal_as_test.cpp
// compile with: /clr
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal.h>
using namespace System;
using namespace msclr::interop;
int main() {
const char* message = "Test String to Marshal";
String^ result;
result = marshal_as<String^>( message );
return 0;
}
Requirements
Header file: <msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h>, or <msclr\marshal_atl.h>
Namespace: msclr::interop