gibt es eine Möglichkeit midl erzeugt jede Schnittstelle in einem separaten .h haben?
-
16-09-2019 - |
Frage
Ich habe eine Reihe von Objekten, die Abstracts Schnittstellen erzeugt aus einer IDL-Datei erben. Jedes Objekt, das die Verwendung von Thesen Schnittstellen die gleiche Datei interfaces.h umfasst, die alle c enthalten ++ generierte abstrakte Klassen, die zu der IDL-Schnittstelle zugeordnet werden.
Jedes Mal, wenn ich etwas in interfaces.idl alle Klassen ändern, die davon abhängen muß, da interfaces.h Änderung wieder aufzubauen. Gibt es eine Fahne oder etwas midl zu sagen, jede abstrakte Klasse in ihrem eigenen .h zu generieren?
Lösung
Die einzige Art, wie ich denken kann, ist jede Schnittstelle in seiner eigenen IDL-Datei zu setzen, oder teilen sie in mehrere IDLs nach Raten-Änderung.
Dann sind (oder ist es #import - ich vergessen) diese Schnittstelle IDLs in der Hauptbibliothek IDL, die die Bibliothek Typ produzieren, wenn Sie brauchen, dass
.Andere Tipps
Hier ist ein Beispiel, wie die IDL zu organisieren getrennte H-Dateien zu erzeugen und eine einzelne typelib. Die richtige Richtlinie ist der Import.
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();
};