COM DLL만으로 tlb파일 생성및 COM사용하기 (펌)

2016. 8. 24. 15:09IT-개발/winapi 및 MFC

반응형


COM DLL 을 받았는데, TLB 파일은 없이 그냥 쓰라고 하길래~ 찾다가 도움이 되는 글이 있어서 펌

(http://thepassion.tistory.com/22)



COM 모듈만으로 COM 사용하기

 

모듈에 대한 설명 없이 달랑 COM Dll만을 전달 받은 상황. .

 

물론 COM모듈만으로도 사용 가능할 수 있게 하기를 모토로 한다고는 하지만 간단한 인터페이스 설명조차 없이 너무한 거 아니요?

 

암튼 위의 상황에서 삽질하며 알게 된 COM사용 방법에 대해 기술하겠습니다.

 

아래에 기술되는 방법은 제가 테스트를 통해 정상적으로 사용이 가능함을 확인했지만, COM에 대한 소양이 부족한지라, 오류의 가능성이 있을 수 있음을 미리 밝혀둡니다.

 

n  idl 파일 추출하기

     Visual studio도구의 OLE View나 실행>oleview를 실행해서 oleviewer를 실행시킨다.

     2. File>View TypeLib메뉴를 선택해 해당 COM dll혹은 COM exe Open한다.

     디스플레이되는 정보에서 Root로 표시되는 XXX(xxx x.x Type Library)를 클릭하면 오른쪽 윈도우에 idl파일을 생성해서 보여준다.

     해당 내용을 xxx.idl로 저장한다.

 

n  tlb 파일 생성하기

n  방법 1

ü  Win32 Dynamic Linked Library프로젝트 생성해 빈프로젝트를 만든다.

ü  위에서 생성한 idl파일을 프로젝트에 포함한 후 Build하면 *.tlb파일이 생성된다.
( VC++
[ Project>setting>mi] 탭에 MkTypLib commpatible 항목이 체크되어 있어야 한다.

n  방법 2

ü  명령프롬프트 창에서 다음과 같이 입력해 tlb파일을 생성한다.
C:\>midl /mktyplib203 xxx.idl

 

n  tlb파일 import

n  방법 1

ü  #import "xxx.tlb"를 추가 후 컴파일하면 xxx.tlh파일이 생성된다.
xxx.tlh
파일을 열어보면, namespace CLSID, IID등의 정의 부분이 존재한다.

ü  최종적으로,

#import "xxx.tlb" named_guids

using namespace XXXX;

를 코드에 삽입한 후 사용하면 된다.

n  방법2 - MFC를 이용하는 경우

ü  Ctrl+w를 눌러 클래스 위자드를 실행시킨후, New Class버튼을 눌러 From TypeLib를 선택한다.

ü  위에서 생성된 tlb파일을 선택하면, 해당 COM모듈을 사용할 수 있는 wrapper class를 자동으로 생성해 준다