MIDL이 별도의 .h에서 각 인터페이스를 생성하는 방법이 있습니까?
-
16-09-2019 - |
문제
IDL 파일에서 생성 된 초록 인터페이스를 상속하는 객체가 많이 있습니다. 이 인터페이스를 사용하는 각 객체에는 동일한 파일 인터페이스가 포함됩니다. h는 IDL 인터페이스에 매핑되는 모든 C ++ 생성 된 추상 클래스를 포함하는 동일한 파일 인터페이스가 포함됩니다.
interfaces.idl로 변경할 때마다 이에 의존하는 모든 클래스는 interfaces.h 변경이므로 재 구축해야합니다. Midl에게 각 추상 클래스를 자체적으로 생성하도록 지시 할 깃발이나 무언가가 있습니까?
해결책
내가 생각할 수있는 유일한 방법은 각 인터페이스를 자체 IDL 파일에 넣거나 변경 속도에 따라 여러 IDL로 나누는 것입니다.
그런 다음이 인터페이스 IDL을 메인 라이브러리 IDL로 포함 시키십시오 (또는 필요하면 유형 라이브러리를 생성합니다.
다른 팁
다음은 IDL을 구성하여 별도의 .h 파일과 단일 타입 립을 생성하는 방법에 대한 샘플입니다. 올바른 지침은 수입입니다.
main.idl
import "oaidl.idl";
import "ocidl.idl";
import "frag1.idl";
import "frag2.idl";
[
uuid(1BECE2AF-2792-49b9-B133-BBC89C850D6F),
version(1.0),
helpstring("Bibliothèque de types")
]
library Library
{
importlib("stdole2.tlb");
interface IFrag1;
interface IFrag2;
}
frag1.idl
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(9AEB517B-48B9-4628-8DD3-4A0BA8D39BEF),
dual,
nonextensible,
helpstring("Interface IFrag1"),
pointer_default(unique)
]
interface IFrag1 : IDispatch {
HRESULT frag1();
};
frag2.idl
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(D60835D4-E1B1-40fb-B583-A75373EF15BE),
dual,
nonextensible,
helpstring("Interface IFrag2"),
pointer_default(unique)
]
interface IFrag2 : IDispatch {
HRESULT frag2();
};
제휴하지 않습니다 StackOverflow