[COM] COM Type dll(ocx) 모듈 만으로 사용하기(펌)

2019. 5. 16. 13:58IT-개발/C및C++

반응형

실제 이런 일이 생겨서가 아니라 다른 회사의 OCX나 DLL을 쓸일이 많은데, 구입한거 아니여서 아무런 설명을 

 

안해줄때, 아래 사항들 참고해서 사용하면 될듯~ 

 

 

출처: https://thepassion.tistory.com/22 [좋은향기's 프로그램 블로그]

 

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

 

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

 

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

 

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

 

 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로 저장한다.

 

 tlb 파일 생성하기

 방법 1

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

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

 방법 2

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

 

tlb파일 import

방법 1

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

최종적으로,

#import "xxx.tlb" named_guids

using namespace XXXX;

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

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

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

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

 

 

 

'IT-개발 > C및C++' 카테고리의 다른 글

숫자 범위 및 표현(printf, scanf, 등등) ...  (0) 2019.06.25
[string format] 자주 안쓰면 잊어진다  (0) 2019.05.31
for 문 ~  (0) 2019.03.12
동작 시간 계산 방법 (1)  (0) 2018.12.28
Data Type 크기 및 범위  (0) 2018.05.11