MIDL이 별도의 .h에서 각 인터페이스를 생성하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/1142352

  •  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();
};
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top