2016. 8. 24. 15:09ㆍIT-개발/winapi 및 MFC
COM DLL 을 받았는데, TLB 파일은 없이 그냥 쓰라고 하길래~ 찾다가 도움이 되는 글이 있어서 펌
(http://thepassion.tistory.com/22)
COM 모듈만으로 COM 사용하기
모듈에 대한 설명 없이 달랑 COM Dll만을 전달 받은 상황. ㅡ.ㅡ
물론 COM이 ‘모듈만으로도 사용 가능할 수 있게 하기’를 모토로 한다고는 하지만 간단한 인터페이스 설명조차 없이 너무한 거 아니요?
암튼 위의 상황에서 삽질하며 알게 된 COM사용 방법에 대해 기술하겠습니다.
아래에 기술되는 방법은 제가 테스트를 통해 정상적으로 사용이 가능함을 확인했지만, COM에 대한 소양이 부족한지라, 오류의 가능성이 있을 수 있음을 미리 밝혀둡니다.
n idl 파일 추출하기
1 Visual studio도구의 OLE View나 실행>oleview를 실행해서 oleviewer를 실행시킨다.
2 2. File>View TypeLib메뉴를 선택해 해당 COM dll혹은 COM exe를 Open한다.
3 디스플레이되는 정보에서 Root로 표시되는 XXX(xxx x.x Type Library)를 클릭하면 오른쪽 윈도우에 idl파일을 생성해서 보여준다.
4 해당 내용을 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를 자동으로 생성해 준다
'IT-개발 > winapi 및 MFC' 카테고리의 다른 글
OS - x64 - GetSystemDirectory (펌) (0) | 2017.02.22 |
---|---|
Window Version 구하기 (0) | 2017.02.16 |
[Sample] 파일크기 구하기... (0) | 2016.06.16 |
CImage LoadFromResource 의 PNG 문제 (펌) (1) | 2016.05.19 |
MFC에서 제공하는 api로 Thread 생성하기... (0) | 2016.04.05 |