1
저는 COM에 익숙하지 않으므로 어쩌면 어리석은 질문 일지 모르겠지만 어쨌든 묻습니다. :)DLL을 COM 구성 요소로 만들기
DLL COM을 만들기 위해서는 .idl 파일로 인터페이스를 정의하고 MIDL 컴파일러로 컴파일 한 다음 정의 된 인터페이스를 사용하는 클래스를 구현해야합니다. 그런 다음 DllRegisterServer
, DllUnregisterServer
및 DllGetClassObject
을 노출해야합니다. 그리고 그것은 충분해야합니다, 맞습니까?
하지만이 모든했고, 나는 클라이언트 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 제작 프로세스가 잘못 되었습니까?
내 COM은 약간 녹슬었지만 regsvr32를 사용하여 DLL을 등록하는 것을 기억 했습니까? – john
나는 그렇다. Current User \ Classes \ CLSID에 두 GUID (라이브러리 및 클래스)를 모두 등록합니다. 라이브러리의 GUID가 다른 위치에 등록되어 있어야합니까? – Idov
하지만 나는 그렇지 않다고 생각합니다. 내가 다운로드, 등록을 취소하고 오류가 발생하지 않은 또 다른 COM DLL이 있습니다 ... – Idov