2019. 5. 16. 13:58ㆍIT-개발/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 |