Dll 로드시 자료형..

Program/C# 2008. 2. 13. 16:49
C, C++ 로 만들어진 DLL 들을 로드 할때 자료형을 맞추는 일은 처음 하시는 분에게는 까다로운 일이 아닐겁니다.

제 경험상 까다로운 몇몇의 자료형 들에 대해서 예를 들어 보겠습니다.

HWND >> int
    ( 이 인트값은 C# 에서 구해진 IntPtr의 .ToInt32() 변환값으로 채워질 것입니다)
WChar *  >>  [MarshalAs(UnmanagedType.LPWStr)]String
    ( 이는 C# 에서 문자열로 채워질 것입니다)


Marshal 이라는 것 상당히 흥미로운데요..
간단히 알아본봐 Managed & Unmanaged Code 사이의 데이터 타입을 정렬하다..? 라는 군요..

실제로 Marshal 이라는 클래스를 보면 .C++에서 사용되는 자료형들(대표적으로 포인터) 등을
C# 에서도 사용가능하도록 자료형을 맞춰주는 군요...
간단히 몇가지 함수를 보면.. 파라미터는 MSDN 참고 해주시고..
Marshal.PtrToStructure(...)  >> 파라미터러 넘어온 포인터를 구조체 객체로 바꿔주죠...
Marshal.PtrToStringUni(...)  >> 파라미터로 넘어온 포인터를 유니코드 스트링으로 바꿔줍니다.

'Program > C#' 카테고리의 다른 글

FileSystemWatcher 폴더내 파일 변화 감시  (0) 2008.02.29
메세지 관련..  (0) 2008.02.13
UnSafe 컴파일 옵션..  (0) 2008.02.13
: