본문 바로가기

비공개

마샬링

마샬링 라이브러리네이티브 코드와 관리되는 코드를 함께 사용하기 위해서 가장 먼저 해결되어야 할 것이, 두 시스템 간의 데이터 타입의 마샬링이다. 마샬링 라이브러리는 두 시스템간의 타입을 마샬링 하는 코드 작성에 따른 복잡성을 줄여 주는 새로운 라이브러리를 제공하고 있다. 먼저 C++에서 사용되는 문자열 형식을 모두 지원해 준다.

그리고 기본적으로 지원되는 변환 이외의 변환은 개발자가 직접 추가할 수도 있다. 아래의 예는 MSDN 아티클에서 제공하는 마샬링 라이브러리를 사용하여 System::String을 char *로 변환하는 간단한 소스를 보자.

#include <msclr/marshal.h>
void myfunc (String^ s)
{
    msclr::interop::marshal_context ctx;
    const char *s2 = ctx.marshal_as<const char*> (s);
    //...
}