흠냥... 제목이 좀 이상하네요..
우선 글을 쓰기전에 저는 컴에대한 초보임을 먼저 말씀드립니다.
달랑 DLL만 가지고 해당 Com dll을 사용해야하는 경우가 생겨, 방법을 찾던중 알게된 내용을 기술하겠습니다.
아래에 기술되는 방법은 제가 테스트를 통해 정상적으로 사용이 가능함을 확인했지만,
Com에대한 기본적인 소양이 부족한지라, 오류의 가능성이 있을수 있음을 미리 밝혀둡니다.
문제가 있는 부분은 바로잡아주시기를 부탁드립니다..
---------------------------------------------------------------------------------------------------------------------
1. visual studio도구의 OLE View나 실행>oleview를 실행해서 oleviewer를 실행시킨다.
2. File>View TypeLib메뉴를 선택해 해당 COM dll혹은 COM exe를 Open한다.
3. 디스플레이되는 정보에서 Root로 표시되는 XXX(xxx x.x Type Library)를 클릭하면 오른쪽 윈도우에 idl파일을 생성해서
보여준다.
4. 해당 내용을 xxx.idl로 저장한다.
5. *.tlb파일 생성하기
방법1)
- Win32 Dynamic Linked Library프로젝트 생성해 빈프로젝트를 만든다.
- 4에서 저장한 idl파일을 프로젝트에 포함한후 Build하면 *.tlb파일이 생성된다.
*** VC++의 Project>setting>midl탭에 MkTypLib commpatible항목이 체크되어있어야 한다.
방법2)
- 명령프롬프트 창에서 다음과 같이 입력해 tlb파일을 생성한다.
- C:\>midl /mktyplib203 xxx.idl
6. 해당 Com을 사용해야 하는 프로젝트에 tlb파일을 import한다.
방법1)
1)
#import "xxx.tlb"를 추가후 컴파일하면 xxx.tlh파일이 생성된다.
xxx.tlh파일을 열어보면, namespace와 CLSID, IID등의 정의 부분이 존재한다.
2)
최종적으로,
#import "xxx.tlb" named_guids
using namespace XXXX;
를 코드에 삽입한후 사용하면 된다.
방법2)MFC를 이용하는 경우
Ctrl+w를 눌러 클래스 위자드를 실행시킨후, New Class버튼을 눌러 From TypeLib를 선택한다.
5항에서 생성된 tlb파일을 선택하면, 해당 Com을 사용할수 있는 wrapper class를 자동으로 생성해 준다.