'); }
'); }
두개의 오브젝트가 공통으로 사용하는 IDL 이 있을때 클라이언트에서 타입 라이브러리 사용 시 redefinition error 처리 방법
이 문서는 이전에 다음 ID로 출판되었음: KR601178
현상
두개의 오브젝트 AObject 와 BObject 가 각각 자신의 타입라이브러리를 갖고 있으며 AObject 와 BObject 의 IDL 파일에 공통적으로 사용되는 IDL 파일이 있는경우 AObject 와 BObject 를 모두 사용하는 클라이언트가 다음과 같이 타입라이브러리를 import 하면
다음과 같은 오류 메시지가 나온다.
#import "..\bobjprj\bobjprj.tlb" no_namespace #import "..\aobjprj\aobjprj.tlb" no_namespace
e:\works\tlbguide\client\debug\aobjprj.tlh(55) : error C2011:
'tagNewType' : 'struct' type redefinition
'tagNewType' : 'struct' type redefinition
원인
aobjprj.idl 과 bobjprj.idl 파일이 공통으로 사용하는 자료구조인 NewType 을 동시에 import 하였기 때문.
// datatype.idl typedef struct tagNewType{ long lElement; }NewType; // aobjprj.idl : IDL source for aobjprj.dll // // This file will be processed by the MIDL tool to // produce the type library (aobjprj.tlb) and marshalling code. import "oaidl.idl"; import "ocidl.idl"; import "..\include\datatype.idl"; // bobjprj.idl : IDL source for bobjprj.dll // // This file will be processed by the MIDL tool to // produce the type library (bobjprj.tlb) and marshalling code. import "oaidl.idl"; import "ocidl.idl"; import "..\include\datatype.idl";
해결 방법
두 오브젝트를 사용하는 클라이언트는 타입라이브러리를 import 할때 exclude() 문을 사용하여 NewType 이 한번만 import 되도록 지시한다.
#import "..\bobjprj\bobjprj.tlb" no_namespace #import "..\aobjprj\aobjprj.tlb" no_namespace exclude("tagNewType")
'Tech & IT > 프로그래밍' 카테고리의 다른 글
Base64 Encode/Decode (0) | 2010.06.29 |
---|---|
IDL 파일에 사용자지정 구조체 사용하기[데브에서 퍼옴] (0) | 2010.05.22 |
XML Schema (0) | 2010.04.27 |
[xml] 여러개의 xml로 나누기 (0) | 2010.04.26 |
[XML Scheme] Valid Document XML문서의 Valid Check (0) | 2010.04.13 |