2012-10-31 3 views
1

저는 COM에 익숙하지 않으므로 어쩌면 어리석은 질문 일지 모르겠지만 어쨌든 묻습니다. :)DLL을 COM 구성 요소로 만들기

DLL COM을 만들기 위해서는 .idl 파일로 인터페이스를 정의하고 MIDL 컴파일러로 컴파일 한 다음 정의 된 인터페이스를 사용하는 클래스를 구현해야합니다. 그런 다음 DllRegisterServer, DllUnregisterServerDllGetClassObject을 노출해야합니다. 그리고 그것은 충분해야합니다, 맞습니까?

하지만이 모든했고, 나는 클라이언트 C++ 프로그램에서 그것을 확인하려고 할 때, 내 비주얼 스튜디오 ...는 TLH 파일을 찾을 수 없습니다 (# import 문에) 을 말한다

내 .idl의 모습입니다.

import "someIdl.idl"; 

[ 
    uuid(some-guid-Num1), 
    version(1.0), 
    helpstring("The library's description") 
] 
library LibName 
{ 
    importlib("stdole2.tlb"); 
    [ 
     uuid(some-guid-Num2), 
     helpstring("Some Description") 
    ] 
    coclass ClassName 
    {  
     interface Interface_defined_in_someIdl; 
    } 
}; 

.idl에 뭔가가 누락 되었습니까? COM 제작 프로세스가 잘못 되었습니까?

+1

내 COM은 약간 녹슬었지만 regsvr32를 사용하여 DLL을 등록하는 것을 기억 했습니까? – john

+0

나는 그렇다. Current User \ Classes \ CLSID에 두 GUID (라이브러리 및 클래스)를 모두 등록합니다. 라이브러리의 GUID가 다른 위치에 등록되어 있어야합니까? – Idov

+0

하지만 나는 그렇지 않다고 생각합니다. 내가 다운로드, 등록을 취소하고 오류가 발생하지 않은 또 다른 COM DLL이 있습니다 ... – Idov

답변

1

문제는 TLB 파일을 DLL에 리소스로 포함하지 않았기 때문입니다.

관련 문제