♣ 개발/C#

C#에서 C++ API 사용1 ( 함수 마샬링 )

SlowDreamer 2016. 7. 18. 10:19

 C/C++ API를 C#에서 사용하기 위해 고려해주어야 할 것이 마샬링(marshaling)입니다.

 

마샬링이란 이기종간의 통신을 위해서 서로간의 형식을 맞춰주는 것을 의미하는데,

 

이것은 C#에서의 데이터 타입과 C++에서의 데이터 타입이 일치하지 않는 문제(그 외 등등)를 해결하기 위해,

 

C/C++ 메서드 및 클래스의 데이터 타입 변환 또는 동적 메모리 할당을 위한 memory class 생성 등의 일련의 과정을 말합니다.

 

필요한 함수만을 사용하기 위한 함수 마샬링, 구조체 마샬링과 클래스 전체를 사용하기 위한 클래스 마샬링으로 나누어 설명할 예정입니다. 이번에는 함수 마샬링에 대해 알아보겠습니다.

 

함수 마샬링의 경우 DllImport를 사용하여 원하는 함수를 가져와 사용하는 방법으로 데이터 타입을 C#에 맞게 변환해 주어야 합니다.

 

Dll 생성시에 _declspec(dllexport)를 사용하여 dll내부의 메서드를 외부로 노출 시킨 메서드에 한하여

DllImport를 이용해 C#에서 가져와 사용할 수 있습니다.

 

<C++ header>

 

[구조체 마샬링]

 

 

[함수 마샬링]

 

 

 

아래 링크에는 Win32 API를 C#에서 선언하기 위한 데이터 타입들이 정의되어 있습니다. 참고하면 유용할 것 같습니다. http://www.pinvoke.net/default.aspx/

반응형

'♣ 개발 > C#' 카테고리의 다른 글

managed dll 생성 : C++/CLI 이용  (0) 2015.08.10