반응형

최근, Naver쪽지로 다음과 같은 질문을 받았다.


다음은 질문 내용이다.


IDL 보고 질문드립니다.

프로그램 초보입니다;

C++에서는 #import를 써서 idl을 불러오는데요

일반C에서는 어떻게 idl을 불러와야되는지요?

ㅠㅠ

 

COM을 사용하셔야 한다는 분이 상당히 곤란해 하시는 것 같아 DLL만 가지고 C에서 COM사용하는 방법을 적어볼까 한다.


글쓰는 사람이 COM을 배운게 Visual Studio 6.0부터 시작했다는 이유로... Visual Studio의 도구를 소개한다.


Visual Studio Enterprise Edition에서 제공하는 도구중


OLE/COM Object Viewer라는게 있다.


이 프로그램에서 요즘 필자가 개발중인 GMSFileUploader라는 ActiveX를 볼수 있다. 해당 ActiveX에 포함된 COM Object는 그림에서보듯 File Uploader Class이다.다음과 같다.

사용자 삽입 이미지

위의 그림의 메뉴중 View Type Informaition을 선택하면 다음과 같이 DLL로부터 친절하게 IDL파일을 뽑아준다.

사용자 삽입 이미지

 
이 윈도우창의 오른쪽의 코드들이 DLL로부터 뽑은 IDL코드이다.
 
필자에게 쪽지를 보내주신 분처럼 C에서 COM을 사용하고 싶은데 컴파일러가 #import를 지원하지 않느다면 이 IDL로부터 C헤더를 뽑아내면 된다.
 
IDL로부터 C 헤더를 뽑고 싶다면.... MS에서 제공하는 MIDL.exe를 사용한다. 이 파일은 Visual Studio 6.0의 경우 다음 경로에 있다.
 
C:\Program Files\Microsoft Visual Studio\VC98\Bin
 
.net의 경우라면
 
C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin
 
에 포함되어 있다.
 
아까 위의 그림에서 뽑은 IDL을 메모장을 열고 붙여놓고 a.idl로 저장하자.
 
그리고는 Command창에서 다음과 같이 치면
 
헤더가 생성된다.
 
midl a.idl /h a.h
 
헤더안의 Interface는 Class가 아닌 struct형식이므로 C에서도 사용할 수 있다.
반응형

+ Recent posts