안녕하세요 동상이몽입니다.


이틀동안 구글링을 때렸는데도 도저히 알 수가 없네요.


제가 어떤 장비의 라이브러리 (MFC로 만들어져있습니다)를 C# 어플리케이션에서 로딩해서 어떤 작업을 해야하는데요.

이 장비 라이브러리의 공용 함수 명세가 아래와 같습니다.


CString PublicFunction(int param1, int param2);


이걸 C#에서 로딩해서 사용해야하는데요.


지금까지 검색해본결과, C#에서 Unmanaged Dll을 로딩하는 방법은,

1. WIN32Api를 사용하여 LoadLibrary, GetProcessAddress, FreeLibrary등의 함수를 응용하는 방법

2. DllImportAttribute를 사용하는 방법

이 두가지입니다.


그런데 문제는 이 2가지 방법으로는 CString형의 Return Value를 받아 올 수 있는 방법이 없더군요.


이틀째 연구중인데, 구글링에서 돌아오는 답변은 .Net에서는 CString을 받아 올 수 있는 방법이 없이니, MFC Library를 랩핑한 다른 라이브러리를 하나 만들어서 써라..

라는 답이 대다수더군요.


장비의 라이브러리가 항상 바뀔 수 있기때문에 랩핑 라이브러리를 만드는 방법이 굉장히 비효율적이에요.

장비 라이브러리가 바뀔때마다 랩핑 라이브러리도 바꿔줘야한다는 말이 되거든요...


혹시 CString 바로 처리할 수 있는 방법이 없을까요?


요약.

MFC로 만들어진 함수의 Return Type이 CString인데, C#에서 CString Type을 받아처 처리할 수 있는 방법이 있는가? 입니다.